Python 다중 상속 – 1분 만에 Python MRO(Method Resolution Order)

2694 단어 pythonbeginners
파이썬은 고도로 지향된 객체 언어입니다. 즉, 파이썬의 모든 것이 객체이므로 파이썬으로 OOP 로직을 비교적 쉽게 구축할 수 있습니다.

다중 상속을 수행하는 경우 Python 메서드 해결 순서를 알아야 합니다.
개념에 들어가기 전에 여러 부모 클래스가 있는 클래스를 작성하는 방법을 빠르게 상기시켜 봅시다.

클래스가 여러 파이썬 클래스에서 상속되도록 하려면 파생 클래스를 정의할 때 괄호 안에 이러한 클래스의 이름을 씁니다.

이러한 이름은 쉼표로 구분합니다.

class Animal:
    pass

class Bird:
    pass

class Duck(Animal, Bird):
    pass


이제 Python MRO에 대해 설명하겠습니다.

Python MRO(메서드 해결 순서)



다중 상속과 관련된 클래스에서 속성을 찾을 때 순서를 따릅니다.

먼저 현재 클래스에서 검색을 시작합니다. 찾을 수 없는 경우 왼쪽에서 오른쪽으로 상위 클래스로 검색이 이동합니다.

예제를 다시 살펴보고 몇 가지 속성을 추가해 보겠습니다.

class Animal:
    pass

class Bird:
    bird_type = "wings"

class Duck(Animal, Bird):
    pass

duck = Duck()

duck.bird_typeDuck를 먼저 찾은 다음 Animal를, 마지막으로 Bird를 찾습니다.

오리 => 동물 => 새

클래스의 MRO를 얻으려면 mro 속성 또는 mro() 메서드를 사용할 수 있습니다.

Duck.mro()
[<class '__main__.Duck'>, <class '__main__.Animal'>, <class '__main__.Bird'>, <class 'object'>]


컨셉에 대해 궁금한 점이 있다면 댓글로 달아주세요😁

좋은 웹페이지 즐겨찾기