我期望以下代码打印,但它打印012012.为什么?我希望这些调用能够访问相同的变量,因为它们是从同一个类继承的,但它们显然是不同的变量。python类的方法和继承
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'。 – Blckknght
你应该切换到Python 3.6。 https://pythonclock.org/ – wwii