类变量可以是类的实例吗?

时间:2013-06-05 08:46:21

标签: python

类变量,class Foo可以是Foo对象吗?

例如,我正在尝试为11阶的有限域构建一个类,并且我希望选择的生成器(2)与此类与实例相关联。

我的想法:

class FiniteField11:
   generator = FiniteField11(2)

   def __init__(self, element):
       self.elt = element

这不编译;我有NameError: name 'FiniteField11' is not defined。 我意识到这里存在鸡蛋或鸡蛋的第一个问题,但有没有办法实现我想要的呢?

道歉,如果这是重复,但我找不到。

2 个答案:

答案 0 :(得分:3)

您可以这样做:

class FiniteField11:
   def __init__(self, element):
       self.elt = element
FiniteField11.generator = FiniteField11(2)

您的代码失败,因为在解析类定义时未定义FiniteField11

答案 1 :(得分:1)

是的,但是在类声明完成之前,名称不存在。因此,您必须在创建类之后设置此类变量,可能只是在类块之下或实例初始化程序中。