如果我有一个子类继承自基类,该基类的init()将项添加到数组中,如下所示:
class TestBaseClass :
arr = []
def __init__(self) :
print self.arr
self.arr.append(1)
print self.arr
return
class TestChildClass1(TestBaseClass) :
foo = 1
然后我发现奇怪的是,当我实例化子类两次时
^{pr2}$第二个数组似乎没有空数组,但包含第一个数组加上的值1。在
为什么基类实例由两个实例共享而不是作为新实例创建?从直觉上看,这似乎不是人们期望继承的行为方式。在
这里,您创建的是类变量,而不是实例变量。因此,这将被类的所有实例共享。要创建实例变量,最好将成员变量添加到初始值设定项函数(
^{pr2}$__init__
)中的当前对象,如下所示因为我们将
arr
添加到当前对象(self
),所以每当您创建类的对象时,都会创建新的变量。在相关问题 更多 >
编程相关推荐