Python的枚举等效

Ami*_*hum 21 python enums

可能重复:
在Python中实现'枚举'的最佳方法是什么?

不同索引名称列表(如C/C++或Java中的Enum)的Python习惯用法是什么?

澄清:我希望将值的属性设置为限制范围,例如卡套件Heart, Club, Spade, Diamond.我可以用0到3范围内的int来表示它,但它允许超出范围输入(如15).

sna*_*ile 15

class Suite(object): pass

class Heart(Suite): pass
class Club(Suite): pass
Run Code Online (Sandbox Code Playgroud)

等等

python中的一个类是一个对象.所以你可以写

x=Heart
Run Code Online (Sandbox Code Playgroud)

等等


sha*_*pan 8

这是stackoverflow上非常流行的问题

编辑:

class Suite(set):
    def __getattr__(self, name):
        if name in self:
            return name
        raise AttributeError

s1 = Suite(['Heart', 'Club', 'Spade', 'Diamond'])
s1.Heart
Run Code Online (Sandbox Code Playgroud)