Je m'attendrais à ce que le code suivant imprimemais il imprime 012012. Pourquoi? Je m'attendrais à ce que les appels augmentent pour accéder aux mêmes variables puisqu'ils sont hérités de la même classe mais ils sont clairement des variables différentes.Méthodes de classe python et héritage
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()
Il n'a pas d'effet le comportement inattendu vous Je vois, mais je veux noter que vous n'avez pas besoin d'utiliser «super» ici dans l'une ou l'autre de vos sous-classes. Vous pouvez simplement appeler 'self.incr()' à la place. Vous n'avez besoin d'utiliser 'super' que lorsque vous voulez passer une version différente de la fonction (généralement parce que vous avez écrasé la classe actuelle). – Blckknght
Vous devriez passer à Python 3.6. https://pythonclock.org/ – wwii