类变量,class Foo
可以是Foo
对象吗?
例如,我正在尝试为11阶的有限域构建一个类,并且我希望选择的生成器(2)与此类与实例相关联。
我的想法:
class FiniteField11:
generator = FiniteField11(2)
def __init__(self, element):
self.elt = element
这不编译;我有NameError: name 'FiniteField11' is not defined
。
我意识到这里存在鸡蛋或鸡蛋的第一个问题,但有没有办法实现我想要的呢?
道歉,如果这是重复,但我找不到。
答案 0 :(得分:3)
您可以这样做:
class FiniteField11:
def __init__(self, element):
self.elt = element
FiniteField11.generator = FiniteField11(2)
您的代码失败,因为在解析类定义时未定义FiniteField11
。
答案 1 :(得分:1)
是的,但是在类声明完成之前,名称不存在。因此,您必须在创建类之后设置此类变量,可能只是在类块之下或实例初始化程序中。