有没有更好的方法在Python中获得一系列命名常量(枚举)?

Ber*_*ard 17 python

只是看看在python中获取命名常量的方法.

class constant_list:
    (A_CONSTANT, B_CONSTANT, C_CONSTANT) = range(3)
Run Code Online (Sandbox Code Playgroud)

那么当然你可以像这样引用它:

constant_list.A_CONSTANT
Run Code Online (Sandbox Code Playgroud)

我想你可以使用字典,使用字符串:

constant_dic = {
    "A_CONSTANT" : 1,
    "B_CONSTANT" : 2,
    "C_CONSTANT" : 3,}
Run Code Online (Sandbox Code Playgroud)

并像这样引用它:

constant_dic["A_CONSTANT"]
Run Code Online (Sandbox Code Playgroud)

那么,我的问题很简单.有没有更好的方法呢?不是说这些不足或什么,只是好奇 - 我错过了任何其他常见的习语吗?

提前致谢.

Tom*_*lak 19

对于2.3或之后:

class Enumerate(object):
  def __init__(self, names):
    for number, name in enumerate(names.split()):
      setattr(self, name, number)
Run Code Online (Sandbox Code Playgroud)

使用:

 codes = Enumerate('FOO BAR BAZ')
Run Code Online (Sandbox Code Playgroud)

codes.BAZ 将是2,依此类推.

如果您只有2.2,则在此前面加上:

 from __future__ import generators

 def enumerate(iterable):
   number = 0
   for name in iterable:
     yield number, name
     number += 1
Run Code Online (Sandbox Code Playgroud)

(这是从这里取的)

  • 你从object继承来创建一个新式的类. (3认同)