如何使类的对象扩展Enum

时间:2014-11-24 08:58:46

标签: python enums

我有以下Python类。

from enum import Enum  
class Color(Enum):
    red = 1
    blue = 2
    green = 3

但是当我尝试创建一个对象时

color = Color()

它抛出错误告诉

TypeError: __call__() takes at least 2 arguments (1 given)

另一个预期的论点是什么。

1 个答案:

答案 0 :(得分:2)

根据source code中的docstring(请注意,此方法是在元类EnumMeta上定义的):

  当枚举类被赋予匹配值时,

[__call__]被使用   枚举成员(即Color(3))和功能API   (即Color = Enum('Color', names='red green blue'))。

所需的位置参数value可以是现有枚举器的值之一,也可以是新枚举器的名称。

前者的文档here和后者的here涵盖了这一点。