반응형
# 클래스 상속, 다중 상속
상속 : 부모가 가지고 있는 모든 속성과 메소드 자식이 사용 가능
# 예제 1
# 상속 기본
# 슈퍼클래스(부모) 및 서브클래스(자식) -> 모든 속성, 메소드 사용 가능
# 라면 -> 속성(종류, 회사, 맛, 면 종류, 이름) : 부모 (공통)
class Car:
"""Parent Class"""
def __init__(self,tp,color):
self.type = tp
self.color = color
def show(self):
return 'Car Class "Show Method!"'
class BmwCar(Car):
"""Sub Class"""
def __init__(self,car_name,tp,color):
super().__init__(tp,color) # 부모로부터 tp, color 받음
self.car_name = car_name
def show_model(self) -> None:
return "Your Car Name : %s" %self.car_name
class BenzCar(Car):
"""Sub Class"""
def __init__(self,car_name,tp,color):
super().__init__(tp,color) # 부모로부터 tp, color 받음
self.car_name = car_name
def show_model(self) -> None:
return "Your Car Name : %s" %self.car_name
def show(self): # 부모에도 있는 메소드 (오버라이딩)
print(super().show()) # 부모에 있는 메소드도 출력
return 'Car info : %s %s %s' %(self.car_name, self.type,self.color)
# 일반 사용
model1 = BmwCar('520d','sedan','red')
print(model1.color) # Super
print(model1.type) # Super
print(model1.car_name) # Sub
print(model1.show()) # Super
print(model1.show_model()) # Sub
print(model1.__dict__)
#Method Overriding(오버라이딩) # 부모에 있는 메소드와 이름이 같은 메소드
model2 = BenzCar("220d","suv",'black')
print(model2.show()) # Subclass 의 메소드
# Parent Method Call
model3 = BenzCar('350s','sedan','silver')
print(model3.show())
# Inheritance Info
# mro() 모든 상속 보기
print(BmwCar.mro()) # [<class '__main__.BmwCar'>, <class '__main__.Car'>, <class 'object'>]
#object 클래스는 모든 클래스의 부모
print(BenzCar.mro()) # [<class '__main__.BenzCar'>, <class '__main__.Car'>, <class 'object'>]
# 예제2
# 다중 상속
class X():
pass
class Y():
pass
class Z():
pass
class A(X,Y):
pass
class B(Y,Z):
pass
class M(B,A,Z):
pass
print(M.mro()) # [<class '__main__.M'>, <class '__main__.B'>, <class '__main__.A'>, <class '__main__.X'>, <class '__main__.Y'>, <class '__main__.Z'>, <class 'object'>]
print(A.mro()) # [<class '__main__.A'>, <class '__main__.X'>, <class '__main__.Y'>, <class 'object'>]
반응형
'Algorithm > 자료구조, 알고리즘' 카테고리의 다른 글
[코딩 + 알고리즘 완주반] 8일차. 파일 읽기, 쓰기 (0) | 2021.03.22 |
---|---|
[코딩 + 알고리즘 완주반] 7일차. 모듈, 패키지 (0) | 2021.03.21 |
[코딩 + 알고리즘 완주반] 6일차. self, 클래스 변수, 인스턴스 변수 (0) | 2021.03.20 |
[코딩 + 알고리즘 완주반] 6일차. 함수, Lambda (0) | 2021.03.20 |
[코딩 + 알고리즘 완주반] 5일차. 조건문, 반복문,List Comprehension, QUIZ (0) | 2021.03.19 |