이 코드는 예외를 throw합니다. 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()
기본적으로 파이썬이 동적 성 및 가상 메소드를 버리고, 어쨌든 함수가 어휘 적으로 정의 된 위치를 기반으로 속성 룩업 체인의 일부를 건너 뛰도록 요구하고 있습니다. 그런 일은 없을 것이다. – delnan