我已经找到了一种简单的方法来实现(黑客)一个枚举成Python:Python的枚举类(的toString fromstring)
class MyEnum:
VAL1, VAL2, VAL3 = range(3)
然后我就可以把这个作为这样的:
bob = MyEnum.VAL1
性感!
好吧,现在我希望能够得到数字值,如果给定一个字符串,或者一个字符串,如果给定一个数值。比方说,我想字符串完全匹配到Enum项的
我能想到的最好的是这样的:
class MyEnum:
VAL1, VAL2, VAL3 = range(3)
@classmethod
def tostring(cls, val):
if (val == cls.VAL1):
return "VAL1"
elif (val == cls.VAL2):
return "VAL2"
elif (val == cls.VAL3):
return "VAL3"
else:
return None
@classmethod
def fromstring(cls, str):
if (str.upper() == "VAL1"):
return cls.VAL1
elif (str.upper() == "VAL2"):
return cls.VAL2
elif (str.upper() == "VAL2"):
return cls.VAL2
else:
return None
或类似的东西(忽略如何我追赶无效的情况下)
有没有更好的,更蟒蛇为中心的方式来做我上面做的事情?或者上面已经尽可能简洁。
看起来好像有一个更好的方法来做到这一点。
的的if/else总是表示这是一个错误的解决这一数额;) – 2010-12-17 19:49:24
的可能重复[什么是Python中实现一个“枚举”最好的方法是什么? ](http://stackoverflow.com/questions/36932/whats-the-best-way-to-implement-an-enum-in-python) – 2010-12-17 20:10:33
@Nick:你可能想改变你接受的答案。 – 2017-04-05 19:08:08