我确定这是重复的,但我现在无法追踪它。
在此示例中,为什么self
未定义?
class State(Enum):
MY_STATE = type(self)('foo', 'bar')
def __init__(self, some, thing):
self.some = some
self.thing = thing
用type(self)
替换State
也会返回NameError
但State
。
答案 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)