1

一个类变量可以说class Foo是一个Foo对象本身吗?

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

我的想法是:

class FiniteField11:
   generator = FiniteField11(2)

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

这不会编译;我有一个NameError: name 'FiniteField11' is not defined. 我意识到这里有一个先有鸡还是先有蛋的问题,但是有没有办法实现我想要的?

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

4

2 回答 2

3

你可以这样做:

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

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

于 2013-06-05T08:48:37.397 回答
2

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

于 2013-06-05T08:49:13.483 回答