class GrandParent():
def __init__(self, a, b):
self._a = a
self._b = b
def blah(self):
return "GP:" + self._a + self._b
class Parent2(GrandParent):
def __init__(self, a, b, c):
self._a = b
self._b = a
self._c = self.blah()
class Child2(Parent2):
def __init__(self, a, b, c, d):
Parent2.__init__(self, a, b, c)
def blah(self):
return ("C2: " + self._a + self._b
+ self._c + self._d)
c2 = Child2("A", "B", "C", "D")
ここに私が追跡するはずのコードです。私はオブジェクトc2
のChild2
を作成します。私はChild2.__init__
に入る。私はParent2.__init__
に入る。 self._a
、self._b
を初期化します。Python OOPトレース小さな混乱
私の問題はself._c
です。
Parent2
はblah()
メソッドを持っていないので、私はそれがGrandParent.blah()
からself._c
を得ることを期待するが、代わりにそれはChild2.blah()
に行きます。なぜこれが起こるのですか?
あなたの例では、 'Child2'は' Parent2'のサブクラスである必要があります(現在 'Parent1'と言います)。私はそれを修正するには編集が小さすぎます。 –
@ P-robotが完了したので、編集が十分に大きくなるようにいくつかの改良が加えられました。 –
実際、これはもっと大きなもののコードスニペット部分ですが、Parent1は要素を再生しませんでしたし、Child1のようなクラスもありませんでした。そのため、私の問題に関係しないので削除しました。 –