【发布时间】:2018-02-04 12:03:09
【问题描述】:
我希望下面的代码会打印 012345,但它会打印 012012。为什么?我希望对 incr 的调用访问相同的变量,因为它们是从同一个类继承的,但它们显然是不同的变量。
class a(object):
var = 0
@classmethod
def incr(cls):
print cls.var
cls.var+=1
class b(a):
def func(self):
super(b,self).incr()
class c(a):
def func(self):
super(c,self).incr()
t = a()
t1 = b()
t2 = c()
t1.func()
t1.func()
t1.func()
t2.func()
t2.func()
t2.func()
【问题讨论】:
-
它不会影响您看到的意外行为,但我想指出您不需要在任何子类中使用
super。您可以直接致电self.incr()。当你想跳过不同版本的函数时,你只需要使用super(通常是因为你已经在当前类中被覆盖了)。 -
你应该切换到 Python 3.6。 pythonclock.org
标签: python class methods multiple-inheritance