我正试图向一个类添加一个变量,该类保存该类的实例。下面是我的代码的一个简短版本。

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())

在运行代码时,我得到以下错误。
Traceback (most recent call last):
  File "classy.py", line 6, in Classy
    CLASSIES.append(Classy())
NameError: name 'Classy' is not defined

是否有其他方法将类的实例添加到该类中的类/静态变量?

最佳答案

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

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

for i in xrange(4):
    Classy.CLASSIES.append(Classy())

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

10-04 15:51