を印刷するには次のコードが必要ですが、012012が表示されます。なぜですか?私はincrへの呼び出しが同じクラスから継承されているので同じ変数にアクセスすることを期待しますが、それらは明らかに異なる変数です。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