このコードは例外をスローします。AttributeError、 "wtf!"、A.foo()
がB.foo1()
を呼び出しているため、A.foo1()
を呼び出してはいけませんか?私はA.foo1()
を呼び出すためにそれを強制することができますどのようにそれはプログラミング言語が動作し、世界の100%と、意図したとおりに機能さオーバーライドされたメソッドを呼び出すと、オーバーライドされた呼び出しメソッドのスーパークラス
class A(object):
def foo(self):
print self.foo1()
def foo1(self):
return "foo"
class B(A):
def foo1(self):
raise AttributeError, "wtf!"
def foo(self):
raise AttributeError, "wtf!"
def foo2(self):
super(B, self).foo()
myB = B()
myB.foo2()
基本的には、Pythonが動的性や仮想的なメソッドを投げ捨てるように求めています。*関数が字句的に定義されている場所に基づいて、属性ルックアップチェーンの一部をスキップするようにしています。起こることはありません。 – delnan