意外:flufl.enum打印整数值

时间:2011-12-25 20:28:20

标签: python enums

使用Python 3,我将flufl.enum代码打包到我的应用程序源代码树中,只是为了尝试它。示例代码:

from taurine.flufl.enum import Enum

class Colors(Enum):
    red = 1
    green = 2
    blue = 3

print(Colors.red)
red = Colors.red
print("red == Colors.red "+str(red == Colors.red))
print("red == Colors.blue "+str(red == Colors.blue))
print("red is Colors.red "+str(red is Colors.red))

除了print(Color.red)之外,一切都按预期工作。根据{{​​3}}我希望它能打印出“Colors.red”,但它正在打印1.任何熟悉这个包的人都知道是否有办法让它打印出“Colors.red”?我在图书馆的网站上发布了一个问题,但认为这里有人可能也有经验。

编辑:如果我用以下颜色定义颜色,它会按预期工作:

Colors = make_enum('Colors','red green blue')

但我更喜欢以下语法:

class Colors(Enum):
    red = 1
    green = 2
    blue = 3

1 个答案:

答案 0 :(得分:3)

我意识到init甚至没有在EnumMetaclass上调用。我认为_enum.py中的以下代码是为了从Enum继承所有你需要做的事情,但是关于它的一些东西不起作用而且超出了我的范围:

class Enum:
    __metaclass__ = EnumMetaclass

这有效:

class Colors(metaclass=EnumMetaclass):
    red = 1
    green = 2
    blue = 3

我现在很高兴。

编辑:找出原因。请参阅以下问题的第一个答案:Shouldn't __metaclass__ force the use of a metaclass in Python?