在Python中有没有更好的方法获取命名常量系列(枚举)?
我在寻找在Python中获取命名常量的方法。
class constant_list:
(A_CONSTANT, B_CONSTANT, C_CONSTANT) = range(3)
然后你当然可以这样引用它:
constant_list.A_CONSTANT
我想你可以使用字典,用字符串作为键:
constant_dic = {
"A_CONSTANT" : 1,
"B_CONSTANT" : 2,
"C_CONSTANT" : 3,}
然后这样引用它:
constant_dic["A_CONSTANT"]
我的问题很简单。有没有更好的方法来做到这一点?并不是说这些方法不好,只是好奇一下,还有没有我没想到的常见写法?
提前谢谢你。
6 个回答
2
2
constant_dic的另一种构建方式:
constants = ["A_CONSTANT", "B_CONSTANT", "C_CONSTANT"]
constant_dic = dict([(c,i) for i, c in enumerate(constants)])
19
对于2.3版本或更高版本:
class Enumerate(object):
def __init__(self, names):
for number, name in enumerate(names.split()):
setattr(self, name, number)
使用方法:
codes = Enumerate('FOO BAR BAZ')
codes.BAZ
的值将是2,以此类推。
如果你只有2.2版本,请在前面加上:
from __future__ import generators
def enumerate(iterable):
number = 0
for name in iterable:
yield number, name
number += 1
(这段内容来自于 这里)