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次印刷的结果吗?我找不到这个逻辑:)
答案 0 :(得分:2)
I'm not sure how self.w += 1 will create an instance variables instead of just increment class variable or raise an exception for missing instance variable?
这可能有助于您理解它:
>>> class Foo:
... x = 1
... def __init__(self):
... print 'self =', self
... print 'self x =', self.x
... print 'foo x =', Foo.x
... print self.x is Foo.x
... Foo.x = 2
... self.x = 3
... print 'self x =', self.x
... print 'foo x =', Foo.x
...
>>> a = Foo()
self = <__main__.Foo instance at 0x1957c68>
self x = 1
foo x = 1
True
self x = 2
foo x = 3
>>> print a
<__main__.Foo instance at 0x1957c68>
答案 1 :(得分:0)
我不确定你对此感到困惑。 C3
定义了__init__
方法,可以增加self.w
的值。因此,两个实例都将获取值为4
的实例变量,而类对象本身具有值为3
的类变量。