でコンストラクタをバイパス:は、私は、継承の以下のチェーンがあるとのPython 2.7
class Base(object):
def __init__(self, a=1, b=2):
print "BASE"
print a
print b
class Inherit1(Base):
def __init__(self, a=3, b=4):
print "INHERIT1"
super(Inherit1, self).__init__(a=a, b=b)
class Inherit2(Inherit1):
def __init__(self, a=5, b=6):
print "INHERIT2"
super(Inherit2, self).__init__(a=a, b=b)
Inherit2()
それはなり出力:
INHERIT2
INHERIT1
BASE
5
6
しかし、私はInherit1のコンストラクタを回避したいと思い、すなわち出力
INHERIT2
BASE
5
6
そうする方法はありますか?
EDIT Base/Inherit1は変更できません。Inherit2のみ編集できます。
よう
super(Inherit1, self)
にスーパー変更super(Inherit2, self)
を呼び出します。 – Hammsあなたが主張することはしません。 'INHERIT2'' BASE''5''5' – torek
その他の質問:' Inherit1'から継承する必要がありますか?あなたは 'Inherit1'または' Base'を変更できますか?多くのオプションがありますが、どちらが良いかは、なぜあなたがこれをやっているのか、あなたの制限が何であるかによって部分的に異なります。この質問は非常に抽象的であるため、別のものを推薦するのは難しいです。 –