공부합시다!/python
15. Class 상속
간서치
2023. 2. 13. 00:11
728x90
지금까지 배운 Class를 다른 Class에서 사용할 수도 있습니다.
이를 Class 상속이라고 합니다.
부모 Class 슈퍼 클래스라고 하며 이를 물려받는 Class를 자식 Class 혹은 서브 Class 라고 합니다.
계속해서 재사용률을 높여 코드를 단순화하기 위해서 사용합니다.
'''
1. 클래스 상속, 다중상속
1.1. 클래스 상속
1.2. 클래스 상속 예제 코디
1.3. 클래스 다중 상속
'''
# 예제 1
# 상속 기본
# 부모 클래스 (슈퍼 클래스) 및 자식 클래스(서브 클래스) -> 모든 속성, 메소드 사용 가능
# 코드의 단순화 가능
# 라면 -> 속성(종류, 회사, 맛, 면, 면 종류, 이름) : 부모
# 속성을 물려받아 사용하면 코드의 단순화
class Car:
''' Parent Class'''
def __init__(self, type, color):
self.type = type
self.color = color
def show(self):
return 'Car Class "show Method!"'
class BmwCar(Car):
''' Sub Class'''
def __init__(self, car_name, type, color):
super().__init__(type, color)
self.car_name = car_name
def show_model(self) -> None:
return "You Car Name : %s " % self.car_name
class BenzCar(Car):
''' Sub Class'''
def __init__(self, car_name, type, color):
super().__init__(type, color)
self.car_name = car_name
def show_model(self) -> None:
return "You 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)
print(model1.type)
print(model1.car_name)
print(model1.show())
print(model1.show_model())
print(model1.__dict__)
# Method Overriding(오버라이팅) -> 부모와 동일한 메소드가 존재할 경우 자식 메소드는 부모 메소드를 참조하지 않음.
model2 = BenzCar('AMG', 'sub', 'black')
print(model2.show())
# parent Method Call
model3 = BenzCar('BMG', 'sedan', 'White')
print(model3.show())
# 상속 관계가 깊은 경우 표현하는 method
# Inheritance Info
print(BmwCar.mro())
print(BenzCar.mro())
# 다중 상속
class X():
pass
class Y():
pass
class Z():
pass
class A(X, Y):
pass
class B(Y, Z):
pass
class C(B, A, Z):
pass
print(C.mro())
print(B.mro())



728x90