Logo
내 게시판 만들기
파이썬

다중 상속과 MRO

구름이 | 2026.04.27 06:20:06
조회 11 | 추천 0

파이썬은 「다중 상속(multiple inheritance)」을 지원합니다.

한 클래스가 여러 부모 클래스에서 동시에 상속받을 수 있다는 뜻입니다.

class Pet(Animal, NamedEntity): pass — Pet은 Animal과 NamedEntity의 모든 능력을 합쳐 가집니다.



다중 상속의 어려움은 「두 부모에 같은 이름의 메서드가 있을 때 어느 것이 호출되는가」입니다.

파이썬은 이를 「MRO(Method Resolution Order, 메서드 결정 순서)」로 풀어냅니다.

ClassName.__mro__로 그 순서를 볼 수 있습니다.



MRO의 알고리즘은 「C3 linearization」으로, 「자기 → 첫 번째 부모 → 두 번째 부모 → 공통 조상」 순서를 자동으로 결정합니다.

직접 보면 복잡하지만 「왼쪽에서 오른쪽으로, 깊이 우선」이 대략적 직관입니다.



다중 상속의 대표 활용은 「믹스인(mixin)」 패턴입니다.

작은 기능을 가진 클래스를 만들어 여러 클래스에 「섞어 넣는」 식.

class LoggerMixin: def log(self, msg): print(f"[LOG] {msg}").

class Service(BaseService, LoggerMixin): pass — Service는 BaseService의 본업에 LoggerMixin의 로그 기능을 더 가집니다.



다중 상속은 강력하지만 복잡해질 수 있어 「합성(composition) 또는 단일 상속 + 믹스인」을 더 권장하는 의견이 많습니다.

「상속이 합성보다 좋다는 신화」를 깨는 책 「Design Patterns」 이후 「Favor composition over inheritance」가 널리 받아들여지는 원칙이 됐습니다.




한 줄 요약


파이썬은 다중 상속을 지원하며 MRO(C3 linearization)로 메서드 결정 순서를 정합니다.

믹스인 패턴이 다중 상속의 대표 활용이지만 합성을 더 권장하는 흐름이 있습니다.




더 알아볼 것


- __mro__로 상속 순서 보기

- 다이아몬드 상속 문제

- Mixin 패턴의 좋은 예와 나쁜 예

공유하기
목록보기
번호 제목 글쓴이 작성일 조회 좋아요
71 햇살이 26/04/27 11 0
70 곰돌이 26/04/27 14 0
69 구름이 26/04/27 16 0
68 부엉이 26/04/27 13 0
67 야옹이 26/04/27 13 0
66 야옹이 26/04/27 15 0
65 멍뭉이 26/04/27 32 0
64 멍뭉이 26/04/27 14 0
63 부엉이 26/04/27 17 0
62 구름이 26/04/27 12 0
61 멍뭉이 26/04/27 15 0
60 야옹이 26/04/27 14 0
59 토순이 26/04/27 15 0
58 다람쥐 26/04/27 15 0
57 햇살이 26/04/27 20 0
56 멍뭉이 26/04/27 10 0
55 구름이 26/04/27 11 0
54 다람쥐 26/04/27 14 0
53 곰돌이 26/04/27 12 0
52 햇살이 26/04/27 38 0
51 멍뭉이 26/04/27 12 0
50 곰돌이 26/04/27 39 0
49 다람쥐 26/04/27 13 0
48 너구리 26/04/27 14 0
47 구름이 26/04/27 16 0
46 야옹이 26/04/27 13 0
45 너구리 26/04/27 13 0
44 야옹이 26/04/27 14 0
43 곰돌이 26/04/27 14 0
42 구름이 26/04/27 11 0
신고하기

신고 사유를 선택해 주세요.