반응형
오늘은 파이썬에서 클래스의 특징인 상속에 대해서 알아보는 시간을 갖도록 하겠다.
예제1.
- 부모클래스(슈퍼클래스)를 상속받으면 슈퍼클래스 및 서브클래스의 모든 속성, 메소드 사용 가능
class Car:
"""Parent Class"""
def __init__(self, tp, color):
self.type = tp
self.color = color
def show(self):
return 'Car Class "Shor Method!"'
# 상속받을 슈퍼클래스를 인자로 넣어주면 상속
class BmwCar(Car):
"""Sub Class"""
def __init__(self, car_name, tp, color):
# 슈퍼클래스를 초기화 해줘야 한다.
super().__init__(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)
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
# "red"
print(model1.type) # Super
# "sedan"
print(model1.car_name) # Sub
# "520d"
print(model1.show()) # Super
# "Car Class "Shor Method!""
print(model1.show_model()) # Sub
# "Your Car Name : 520d"
print(model1.__dict__)
# "{'type': 'sedan', 'color': 'red', 'car_name': '520d'}"
# Method Overriding(오버라이딩)
model2 = BenzCar("220d", "suv", "black")
print(model2.show())
# "Car Class "Shor Method!""
# "Car Info : 220d suv black"
# Parent Method Call
model3 = BenzCar("350s", "sedan", "silver")
print(model3.show())
# "Car Class "Shor Method!""
# "Car Info : 220d suv black"
# Inheritance Info (상속정보 -> 리스트로 반환)
print(BmwCar.mro())
# "[<class '__main__.BmwCar'>, <class '__main__.Car'>, <class '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())
print(A.mro())
Result
[<class '__main__.M'>, <class '__main__.B'>, <class '__main__.A'>, <class '__main__.X'>, <class '__main__.Y'>, <class '__main__.Z'>, <class 'object'>]
[<class '__main__.A'>, <class '__main__.X'>, <class '__main__.Y'>, <class 'object'>]
반응형
'Programming > Python' 카테고리의 다른 글
[Python] 파이썬 파일 쓰기(Write)에 대해서 알아보자. (0) | 2021.07.31 |
---|---|
[Python] 파이썬 파일 읽기(Read)에 대해서 알아보자. (0) | 2021.07.31 |
[Python] 파이썬 클래스(class)에 대해서 알아보자. (0) | 2021.07.25 |
[Python] 파이썬 람다(Lambda)에 대해서 알아보자. (0) | 2021.06.20 |
[Python] 파이썬 함수에 대해서 알아보자. (0) | 2021.06.20 |