我已經找到了一種簡單的方法來實現(黑客)一個枚舉成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