【发布时间】:2013-08-16 12:19:24
【问题描述】:
class C2:
x = 2
z = 2
class C3:
w = 3
z = 3
def __init__(self):
self.w += 1
class C1(C2, C3):
x = 1
y = 1
I1 = C1()
I1.name = 'I1'
I2 = C1()
I2.name = 'I2'
print I1.w # 4
print I2.w # 4
print C3.w # 3
你能解释一下最近 3 次打印的结果吗?我找不到这里面的逻辑:)
【问题讨论】:
-
您已经使用术语类变量与实例变量...
C3是一个类,但I1和I2是实例.. 我不确定这里的混淆是什么? -
分配给
self.<attribute name>always 将创建一个实例属性,如果之前没有。 读取一个没有实例属性的实例属性将始终通过类来查看它是否在那里定义。所以self.w + 1返回类属性w的总和,然后self.w =将其分配给实例属性w。 -
非常感谢Martijn Pieters
标签: python inheritance class-variables