본문 바로가기
파이썬

파이썬 손자 클래스에서 슈퍼 메서드를 호출하는 방법은 무엇입니까?

by º기록 2020. 11. 21.
반응형

3 단계의 클래스 상속이있는 코드로 작업하고 있습니다. 가장 낮은 수준의 파생 클래스에서 계층 구조 2 수준 위로 메서드를 호출하는 구문은 무엇입니까? 슈퍼 슈퍼 콜? "중간"클래스는 호출해야하는 메서드를 구현하지 않습니다.

 

해결 방법

 

글쎄, 이것은 그것을하는 한 가지 방법입니다.

class Grandparent(object):
    def my_method(self):
        print "Grandparent"

class Parent(Grandparent):
    def my_method(self):
        print "Parent"

class Child(Parent):
    def my_method(self):
        print "Hello Grandparent"
        Grandparent.my_method(self)

아마도 당신이 원하는 것은 아니지만 내가 착각하지 않는 한 최고의 파이썬입니다. 당신이 요청하는 것은 반 비단뱀처럼 들리며 당신은 우리가 당신에게 일을하는 행복한 비단뱀 방식을 제공하기 위해 왜 그것을하고 있는지 설명해야 할 것입니다.

또 다른 예, 아마도 원하는 것 (귀하의 의견에서) :

class Grandparent(object):
    def my_method(self):
        print "Grandparent"

class Parent(Grandparent):
    def some_other_method(self):
        print "Parent"

class Child(Parent):
    def my_method(self):
        print "Hello Grandparent"
        super(Child, self).my_method()

보시다시피 Parent my_method 를 구현하지 않지만 Child 는 여전히 super를 사용하여 Parent 메서드를 가져올 수 있습니다. code> "sees", 즉 Grandparent my_method .

 

참조 페이지 https://stackoverflow.com/questions/31232098

 

 

반응형

댓글