【发布时间】:2011-03-15 23:59:08
【问题描述】:
不同索引名称列表(如 C/C++ 或 Java 中的 Enum)的 Python 习语是什么?
澄清:我希望将值的属性设置为受限范围,例如卡片组Heart, Club, Spade, Diamond。我可以用 0..3 范围内的 int 表示它,但它会允许超出范围的输入(如 15)。
【问题讨论】:
不同索引名称列表(如 C/C++ 或 Java 中的 Enum)的 Python 习语是什么?
澄清:我希望将值的属性设置为受限范围,例如卡片组Heart, Club, Spade, Diamond。我可以用 0..3 范围内的 int 表示它,但它会允许超出范围的输入(如 15)。
【问题讨论】:
class Suite(object): pass
class Heart(Suite): pass
class Club(Suite): pass
等等
python 中的类是一个对象。所以你可以写
x=Heart
等等
【讨论】:
这是stackoverflow 上非常受欢迎的问题
编辑:
class Suite(set):
def __getattr__(self, name):
if name in self:
return name
raise AttributeError
s1 = Suite(['Heart', 'Club', 'Spade', 'Diamond'])
s1.Heart
【讨论】: