다중 상속
이해하기 쉽고, 장황하지 않은 자료를 기반으로 강의를 진행합니다.
잔재미코딩 소식 공유
좀더 제약없이, IT 컨텐츠를 공유하고자, 자체 온라인 강의 사이트와 유투브 채널을
오픈하였습니다
응원해주시면, 곧 좋은 컨텐츠를 만들어서 공유하겠습니다
응원해주시면, 곧 좋은 컨텐츠를 만들어서 공유하겠습니다
● 잔재미코딩 유투브 오픈
[구독해보기]
10. 다중 상속¶
- 다중 상속: 2개 이상의 클래스를 상속받는 경우
- 상속 받은 모든 클래스의 attribute 와 method 를 모두 사용 가능
In [238]:
# 클래스 선언
class Person:
def sleep(self):
print('sleep')
class Student(Person):
def study(self):
print('Study hard')
class Worker(Person):
def work(self):
print('Work hard')
# 다중 상속
class PartTimer(Student, Worker):
def find_job(self):
print('Find a job')
In [240]:
parttimer1 = PartTimer()
parttimer1.sleep()
parttimer1.study()
parttimer1.work()
parttimer1.find_job()
- 다중 상속된 클래스의 나열 순서가 자식 클래스가 속성(멤버변수,메서드) 호출에 영향을 줌
- 상속된 클래스 중 앞에 나열된 클래스부터 속성을 찾음
In [241]:
# 클래스 선언
class Person:
def sleep(self):
print('sleep')
class Student(Person):
def study(self):
print('Study hard')
def play(self):
print('play with friends')
class Worker(Person):
def work(self):
print('Work hard')
def play(self):
print('drinks alone')
# 다중 상속
class PartTimer(Student, Worker):
def find_job(self):
print('Find a job')
초간단 연습12
아래 코드를 실행시키면서, 위 코드 결과와 비교하며, 출력 값이 왜 이렇게 나왔는지 이해하기(다중 상속)
아래 코드를 실행시키면서, 위 코드 결과와 비교하며, 출력 값이 왜 이렇게 나왔는지 이해하기(다중 상속)
본 자료와 같이 IT 기술을 잘 정리하여, 온라인 강의로 제공하고 있습니다
체계적으로 전문가 레벨까지 익힐 수 있도록 온라인 강의 로드맵을 제공합니다
In [243]:
parttimer1 = PartTimer()
parttimer1.study()
parttimer1.work()
parttimer1.play()
초간단 연습13
Saladent(공부하는 직장인) 클래스 만들기 해당 객체는 Worker와 Student 클래스를 상속받고, play() 메서드 호출시 'drinks alone' 이 출력되도록 할 것
Saladent(공부하는 직장인) 클래스 만들기 해당 객체는 Worker와 Student 클래스를 상속받고, play() 메서드 호출시 'drinks alone' 이 출력되도록 할 것
In [244]:
class Saladent(Worker, Student):
pass
In [245]:
saladent1 = Saladent()
saladent1.play()
다음 코드는 최상위 클래스 메서드를 두 번 호출하게 되는 문제점이 있음 (심화)¶
본 자료와 같이 IT 기술을 잘 정리하여, 온라인 강의로 제공하고 있습니다
가장 빠르게 풀스택 개발자가 될 수 있도록, 최적화된 로드맵을 제공합니다
In [190]:
# 클래스 선언
class Person:
def __init__(self):
print('I am a person')
class Student(Person):
def __init__(self):
Person.__init__(self)
print('I am a student')
class Worker(Person):
def __init__(self):
Person.__init__(self)
print('I am a worker')
# 다중 상속
class PartTimer(Student, Worker):
def __init__(self):
Student.__init__(self)
Worker.__init__(self)
print('I am a part-timer and student')
In [191]:
parttimer1 = PartTimer()
- super() 내장함수를 사용하면 위의 문제를 해결할 수 있음
In [187]:
# 클래스 선언
class Person:
def __init__(self):
print('I am a person')
class Student(Person):
def __init__(self):
super().__init__()
print('I am a student')
class Worker(Person):
def __init__(self):
super().__init__()
print('I am a worker')
# 다중 상속
class PartTimer(Student, Worker):
def __init__(self):
super().__init__()
print('I am a part-timer and student')
In [188]:
parttimer1 = PartTimer()
본 자료와 같이 IT 기술을 잘 정리하여, 온라인 강의로 제공하고 있습니다
체계적으로 전문가 레벨까지 익힐 수 있도록 온라인 강의 로드맵을 제공합니다
- 다양한 상속구조에서 메서드 이름을 찾는 순서는 '__mro__'에 튜플로 정의되어 있음
- MRO: Method Resolution Order 의 약자
In [195]:
PartTimer.__mro__
Out[195]: