728x90
다중 상속이란 여러 기반 클래스로부터 상속을 받아서 파생 클래스를 만드는 방법이다.
다음과 같은 문제점이 있다.
1. 상속받은 여러 기초 클래스에 같은 이름의 멤버가 존재할 수 있다. (충돌 가능)
2. 하나의 클래스를 간접적으로 두 번 이상 상속 받을 수 있다.
다이아몬드 상속,, 문제가 많다! 부정확함
해결책으로 메서드 탐색 순서(Method Resolution Order, MRO) 이용
MRO 기법은 복잡한 상속관계를 지닐 때 어떤 클래스의 멤버가 호출되는지 알아볼 수 있는 편리한 방법이다.
다중 상속은 가급적 안쓴다...!
상속은 가급적 최대 2번까지만!
# 다중상속에 대한 실습
class Person:
def __init__(self):
print("나는 사람입니다.")
def greeting(self):
print("Person 클래스의 greeting")
class Student(Person):
def __init__(self):
Person.__init__(self)
print("나는 학생")
def greeting(self):
print("Student 클래스의 greeting")
class Worker(Person):
def __init__(self):
Person.__init__(self)
print("나는 직장인")
def greeting(self):
print("Worker 클래스의 greeting")
# 다중 상속 (다이아몬드 상속)
class PartTimer(Student,Worker):
def __init__(self):
Student.__init__(self)
Worker.__init__(self)
print("나는 파트타이머")
# def greeting(self):
# print("Parttimer 클래스의 greeting")
parttimer = PartTimer()
print(PartTimer.__mro__)
parttimer.greeting()
출처 : 따즈아 파이썬 기초부터 실무까지 제대로 배우기
'Python > 객체지향 프로그래밍' 카테고리의 다른 글
(Python) 객체지향 프로그래밍 - 추상 클래스 (0) | 2024.01.24 |
---|---|
(Python) 객체지향 프로그래밍 - 다형성 Polymorphism (0) | 2024.01.23 |
(Python) 객체지향 프로그래밍 - 클래스 상속 (private) (0) | 2024.01.23 |
(Python) 객체지향 프로그래밍 - 클래스 상속 (1) (0) | 2024.01.16 |
(Python) 파이썬 변수 종류 / None / 오버로딩 & 오버라이딩 (0) | 2024.01.15 |