프로그래밍 언어/Python

파이썬의 자식 클래스에서 부모 클래스의 메서드를 호출하는 방법

Rateye 2021. 6. 16. 10:18
728x90
반응형
질문 : 파이썬의 자식 클래스에서 부모 클래스의 메서드를 어떻게 호출합니까?

Python에서 간단한 개체 계층을 만들 때 파생 클래스에서 부모 클래스의 메서드를 호출 할 수 있기를 원합니다. Perl과 Java에는 이에 대한 키워드가 있습니다 ( super ). Perl에서는 다음과 같이 할 수 있습니다.

package Foo;

sub frotz {
    return "Bamf";
}

package Bar;
@ISA = qw(Foo);

sub frotz {
   my $str = SUPER::frotz();
   return uc($str);
}

Python에서는 자식에서 명시 적으로 부모 클래스의 이름을 지정해야하는 것으로 보입니다. Foo::frotz() 와 같은 작업을 수행해야합니다.

이 동작은 깊은 계층 구조를 만들기 어렵 기 때문에 옳지 않은 것 같습니다. 만약 아이들이 어떤 클래스가 상속 된 메서드를 정의했는지 알아야한다면 모든 종류의 정보 고통이 발생합니다.

이것은 파이썬의 실제 한계입니까, 내 이해의 격차입니까, 아니면 둘 다입니까?

답변

super() 함수를 사용하십시오.

class Foo(Bar):
    def baz(self, **kwargs):
        return super().baz(**kwargs)

Python <3의 경우 새 스타일 클래스 를 사용하도록 명시 적으로 옵트 인하고 다음을 사용해야합니다.

class Foo(Bar):
    def baz(self, arg):
        return super(Foo, self).baz(arg)
출처 : https://stackoverflow.com/questions/805066/how-do-i-call-a-parent-classs-method-from-a-child-class-in-python
728x90
반응형