私はA、B、Cの3つのクラスを持っているとしましょう。AはBの基本クラスで、BはCです。階層は通常ここに保持されますが、1つのメソッドでは異なるはずです。だから、基本的には次のように動作するはずPythonあるクラスから継承しますが、別のクラスを呼び出すメソッドをオーバーライドしますか?
class A(object):
def m(self):
print 'a'
class B(A):
def m(self):
super(B, self).m()
print 'b'
class C(B):
def m(self):
super(A, self).m()
print 'c'
:
a = A()
a.m()
a
b = B()
b.m()
a
b
c = C()
c.m()
a
c
しかし、それはするつもりはない、それは次のように例えばA.
から継承されたようにCクラスの場合、それは行動しなければなりません
私はこのクラスを解決するために、私はクラスから継承することができます私はBからのすべてを継承し、その特定のメソッドのためにm
は基本クラスAのためにsuperを呼び出します。私はそのメソッドが1つの例外であることを意味します。それともクラスCのためにどういうふうに呼び出すべきですか?
どうすればいいですか?
'super 'を使う代わりに' A.m(self) 'を試しましたか? –
@MathiasEttingerいいえ私はしませんでしたが、今は試してみました。ありがとう。あなたは答えとして投稿することができます。それは私の問題を解決するために – Andrius
、A.m()はクラスメソッドでなければなりません – fixmycode