来自cpp / c#,如何在Python中引用类体中的同一个类:
class Foo(object):
ANSWER = Foo(42)
FAIL = Foo(-1)
def __init__(self, value):
self._v = value
当我尝试使用这段代码时,我在一行试图实例化ANSWER实例时得到“name'Foo'未定义”异常。
答案 0 :(得分:1)
在执行完整的类主体之前,不会设置名称Foo
。您可以执行所需操作的唯一方法是在 class
语句完成后向类添加属性:
class Foo(object):
def __init__(self, value):
self._v = value
Foo.ANSWER = Foo(42)
Foo.FAIL = Foo(-1)
听起来你正在重新发明Python enum
module;它允许您定义一个具有常量的类,该类实际上是该类的实例:
from enum import Enum
class Foo(Enum):
ANSWER = 42
FAIL = -1
在class
语句运行后,Foo.ANSWER
是Foo
的一个实例,.value
属性设置为42
。