메서드 탐색 순서 확인하기
많은 프로그래밍 언어들이 다이아몬드 상속에 대한 해결책을 제시하고 있는데 파이썬에서는 메서드 탐색 순서(Method Resolution Order, MRO)를 따릅니다.
- 클래스.mro()
- 클래스.__mro__
>>> D.mro()
[<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>, <class 'object'>]
object 클래스
파이썬에서 object는 모든 클래스의 조상입니다. 그래서 int의 MRO를 출력해보면 int 자기 자신과 object가 출력됩니다.
>>> int.mro()
[<class 'int'>, <class 'object'>]
class X:
pass
괄호 안에 object를 넣은 것과 같습니다.
class X(object):
pass
파이썬 3에서는 괄호 안에 object를 넣어도 되고 넣지 않아도 됩니다.
댓글