나는 세 클래스가 A
, B
및 C
입니다.두 클래스에서 상속하는 객체 메서드 호출
A
은 방법이 hello(self)
입니다. B
은 A
에서 상속 받고 새 메서드 hello(self)
을 구현합니다. C
은 B
에서 상속 받고 hello(self)
메서드를 다시 구현합니다.
이제 b = B()
인스턴스를 만들고 b.hello()
을 호출하면 B.hello(b)
과 같이 호출됩니다.
c = C()
개체를 만들고 c.hello()
을 호출하면 C.hello(c)
대신 실제로 B.hello(c)
을 호출하는 것이 문제입니다. 왜 그런가요?
내 코드는 다음과 같습니다 : 이것은 내 작동하지만
class A:
def hello(self):
self.helloHandler()
def helloHandler(self):
print('class A method')
class B(A):
def helloHandler(self):
print('class B method')
class C(B):
def helloHandler(self):
print('class C method')
c = C()
c.hello()
. 이 시점에서 내 코드에는 수천 개의 행이 있습니다 ... 실제로 게시 할 수는 없지만 그 점이 중요합니다. 나는 그 문제가 무엇인지 모릅니다. 하위 클래스가 일부 메소드를 구현하도록 강제하는 확실하지 않은 이유로 중요하다면 abcmeta를 사용합니다.
편집 : 나는 똑같은 내 물건 두 개를 엉망으로 만들었습니다. 모든 것이 제대로 작동합니다!
코드를 게시하십시오. –
메타 클래스를 사용하는 경우 ABC에 정의 된 추상 메서드에서 상속 된 부모 클래스에 정의 된 구체적인 메서드를 오버로드하지 않아야합니다. – James
문제를 해결하기 위해 투표를 종료 할 수 없습니다. – James