Python 在类定义中实例化类

Tan*_*aki 6 python constructor initialization class static-variables

我正在尝试向保存该类实例的类添加一个变量。以下是我的代码的缩短版本。

class Classy :
    def __init__(self) :
        self.hi = "HI!"
    # "CLASSIES" variable holds instances of class "Classy"
    CLASSIES = []
    for i in xrange(0,4) :
        CLASSIES.append(Classy())
Run Code Online (Sandbox Code Playgroud)

运行代码后,我收到以下错误。

Traceback (most recent call last):
  File "classy.py", line 6, in Classy
    CLASSIES.append(Classy())
NameError: name 'Classy' is not defined
Run Code Online (Sandbox Code Playgroud)

是否有另一种方法可以将类的实例添加到该类中的类/静态变量?

小智 2

类主体在类创建之前执行。因此,您尝试在类存在之前实例化该类。您仍然可以将实例附加到类,但必须在类主体完成后创建它们,例如:

class Classy(object):
    def __init__(self):
        self.hi = "HI!"
    CLASSIES = []

for i in xrange(4):
    Classy.CLASSIES.append(Classy())
Run Code Online (Sandbox Code Playgroud)

但是,我建议您首先认真思考是否真的需要这个有效的全局列表,以及是否需要它成为类对象的一部分。就我个人而言,我几乎从不做这样的事情。