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
반응형
'프로그래밍 언어 > Python' 카테고리의 다른 글
Python 사전 검색 목록 (0) | 2021.06.18 |
---|---|
"JSON 직렬화 가능하지 않은 datetime.datetime"을 극복하는 방법 (0) | 2021.06.16 |
pickle을 사용하여 dict을 저장하는 방법 (0) | 2021.06.14 |
파이썬에서 한 문자열을 다른 문자열에 추가하는 방법 (0) | 2021.06.09 |
Ubuntu에서 pip를 통해 python3 버전의 패키지를 설치하는 방법 (0) | 2021.06.09 |