Python 3中的自定义枚举类型

时间:2017-10-17 10:11:18

标签: python python-3.x enums python-3.6

我确定这是重复的,但我现在无法追踪它。

在此示例中,为什么self未定义?

class State(Enum):
    MY_STATE = type(self)('foo', 'bar')

    def __init__(self, some, thing):
        self.some = some
        self.thing = thing

type(self)替换State也会返回NameErrorState

2 个答案:

答案 0 :(得分:2)

self未定义,因为您在类变量中引用它,而不是实例变量。它类似于在另一种语言的this方法中使用static。同样适用于State,在您引用它时,该类尚未定义且名称不存在。

答案 1 :(得分:1)

为什么不提取这样的另一个类:

from enum import Enum


class MyClass:
    def __init__(self, some, thing):
        self.some = some
        self.thing = thing


class State(Enum):
    MY_STATE = MyClass('foo', 'bar')


print(State.MY_STATE == State.MY_STATE)