>백엔드 개발 >파이썬 튜토리얼 >Python의 하위 클래스에서 상위 클래스 메서드를 어떻게 호출할 수 있나요?

Python의 하위 클래스에서 상위 클래스 메서드를 어떻게 호출할 수 있나요?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-03 14:14:16736검색

How Can I Call Parent Class Methods from Child Classes in Python?

Python의 하위 클래스에서 상위 클래스 메서드 호출

객체 계층 구조를 설계할 때 내부 상위 클래스의 메서드를 호출해야 하는 경우가 많습니다. 파생 클래스. Perl 및 Java와 같은 언어에서는 "super" 키워드가 이를 용이하게 합니다. 하지만 Python에서는 접근 방식이 다른 것 같습니다.

명시적인 부모 클래스 참조

Python에서는 부모 클래스의 이름을 명시적으로 지정하는 것이 유일한 방법인 것으로 보입니다. 자식에게서 메서드를 호출합니다. 예를 들어 상위 클래스 Foo에 frotz 메서드가 포함되어 있으면 하위 클래스 Bar는 이를 Foo::frotz()로 참조해야 합니다.

제한 사항 및 우려 사항

이 접근 방식은 어린이가 상속된 메서드를 정의한 클래스를 항상 알 수 없는 복잡한 계층 구조에서 문제를 일으킬 수 있습니다. 이는 유지 관리 및 가독성 문제로 이어질 수 있습니다.

Super() 함수

다행히 Python 2.2 이상에서는 이러한 제한을 극복하기 위해 super() 함수를 도입했습니다. super()를 사용하면 상위 클래스 메서드에 직접 액세스할 수 있습니다. 예는 다음과 같습니다.

class Foo:
    def frotz(self):
        return "Baz"

class Bar(Foo):
    def frotz(self):
        # Call the parent class's frotz method using super()
        return super().frotz() + " Quux"

super().frotz()를 호출하면 하위 클래스 Bar가 상위 클래스 Foo의 frotz 메서드에 액세스할 수 있습니다.

New-Style 클래스

Python 3.0 이전 버전의 경우 명시적으로 new-style 사용을 선택해야 합니다. 수업. 이 경우 구문은 약간 다릅니다.

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

이전 버전에서 super는 하위 클래스 이름(예: Foo)과 인스턴스 객체(예: self)라는 두 가지 인수를 사용합니다.

위 내용은 Python의 하위 클래스에서 상위 클래스 메서드를 어떻게 호출할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.