我试图将一个变量添加到一个类中,该类包含该类的实例。下面是我代码的简短版本。在
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())
运行代码时,我得到以下错误。在
^{pr2}$
有没有其他方法可以将类的实例添加到该类中的类/静态变量中?在
Tags:
类主体在创建类之前执行。因此,您正在尝试在类存在之前实例化它。您仍然可以将实例附加到类,但必须在类主体完成后创建它们,例如:
但是,我建议您首先仔细考虑是否需要这个有效的全局列表,以及是否需要它成为类对象的一部分。就我个人而言,我几乎从来没有做过这样的事。在
最简单的方法是在创建类之后,在定义了类之后执行此操作,因此可以使用:
(为了方便起见,这里使用list comprehension,因为这是构建列表的最可读和最有效的方法)。在
还请注意,如果这是一个常量,那么您可能应该将其设置为元组而不是列表,如果不打算这样做,您可能不应该使用
ALL_CAPS
名称,该名称按惯例意味着常量。在在我看来,你想要的是:
结果
^{pr2}$编辑
请注意,对于Lattyware代码:
结果
而对于delnan'code的for循环,它不会出现。在
但是很容易纠正:
写作
Classy.CLASSIES[:] = [Classy() for _ in xrange(0,4)]
或
Classy.CLASSIES.extend(Classy() for _ in xrange(0,4))
而不是
Classy.CLASSIES = [Classy() for _ in xrange(0,4)]
这取决于你想要什么。在
编辑2
结果
德尔南,你怎么继续假装经典是全球性的??
在你和拿铁的辩论中我误解了什么吗?在
相关问题 更多 >
编程相关推荐