我更喜欢在Python中定义枚举,如下所示:
class Animal:
class Dog: pass
class Cat: pass
x = Animal.Dog
它比使用整数更能防止错误,因为你不必担心确保整数是唯一的(例如,如果你说Dog=1和Cat=1,你就完蛋了)。
它比使用字符串更能防止错误,因为你不必担心拼写错误(例如。
x==“catt”无声地失败,但x==动物。Catt是一个运行时异常)。
增编:
您甚至可以通过让Dog和Cat从具有正确元类的symbol类继承来增强此解决方案:
class SymbolClass(type):
def __repr__(self): return self.__qualname__
def __str__(self): return self.__name__
class Symbol(metaclass=SymbolClass): pass
class Animal:
class Dog(Symbol): pass
class Cat(Symbol): pass
然后,如果您使用这些值来索引字典,请求它的表示将使它们看起来很好:
>>> mydict = {Animal.Dog: 'Wan Wan', Animal.Cat: 'Nyaa'}
>>> mydict
{Animal.Dog: 'Wan Wan', Animal.Cat: 'Nyaa'}