패스트캠퍼스 파이썬 웹개발 올인원 패키지 후기(9)
파이썬 웹개발 올인원 패키지 9 일차 후기 겸 학습기록 입니다.
지난 시간에 배운 클래스에서 좀 더 심화된 상속에 대해서 학습 하였습니다.
객체지향에서 굉장히 중요한 개념인데요.
상속이 무엇인지 제 학습 기록을 살펴보며 감을 잡아보세요.
클래스 - 상속

(예제 1 : 상속 기본 - 상속을 사용하는 방법)
예제1 에서는 먼저 Car라는 부모 클래스를 선언하고 이 클래스에는 자동차의 기본 속성 타입(세단, suv 등)과 색상을 갖고 있게 됩니다. 그리고 각 제조사 별로 자식 클래스를 선언합니다. 예제에서는 BMW와 제가 좋아하는 Volvo자동차 제조사를 Class로 선언하여 진행해 보았습니다.
# 예제1
# 상속 기본
# 수퍼클래스(부모) 및 서브클래스(자식) -> 모든 속성, 메소드 사용 가능
# 라면 -> 속성(종류, 회사, 맛, 면 종류, 이름) : 부모
class Car:
"""
Super Class(Parent Class)
"""
def __init__(self, tp, color):
self.type = tp
self.color = color
def show(self):
return 'Car Class "Show Method!"'
class Bmw(Car):
"""
Sub Class - 1(Child Class)
"""
def __init__(self, model_name, tp, color):
super().__init__(tp, color)
self.model_name = model_name
def show_model(self) -> None:
return "Your Car Name : %s" % (self. car_name)
class Volvo(Car):
"""
Sub Class - 2(Child Class)
"""
def __init__(self, model_name, tp, color):
super().__init__(tp, color)
self.model_name = model_name
def show_model(self) -> None:
return "Your Car Name : %s" % (self. car_name)
# Method Overriding : 부모 클래스의 매소드를 재정의
def show(self):
return "Car Info : %s %s %s" % (self.model_name, self.type, self.color)
def show2(self):
print(super().show()) # Parent Method Call
return "Car Info : %s %s %s" % (self.model_name, self.type, self.color)

(일반적인 상속 클래스 사용 방법)
# 일반 사용
model1 = Bmw('520d', 'sedan', 'red')
print(model1.color) # Super
print(model1.type) # Super
print(model1.model_name) # Sub
print(model1.show()) # Super
print(model1.show_model()) # Sub
print(model1.__dict__) # Print Namespace
print()
(메소드 오버라이딩)
# Method Overriding(오버라이딩)
model2 = Volvo('XC40', 'suv', 'black')
print(model2.show()) # 부모 클래스에 있는 메소드이지만, 자식 클래스가 재정의(오버라이딩) 했을 경우 자식 메소드 호출
print()
(부모 메소드 호출)
# Parent Method Call
model3 = Volvo('XC90', 'suv', 'silver')
print(model3.show2())
<Output>
red
sedan
520d
Car Class "Show Method!"
Your Car Name : 520d
{'type': 'sedan', 'color': 'red', 'model_name': '520d'}
Car Info : XC40 suv black
Car Class "Show Method!"
Car Info : XC90 suv silver

(상속 정보 출력 : mro 함수)
# Inheritance Info(상속정보 출력 : mro())
print(Bmw.mro())
print(Volvo.mro())
print()
(예제2 : 다중 상속)
# 예제 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())
<Output>
[<class '__main__.Bmw'>, <class '__main__.Car'>, <class 'object'>]
[<class '__main__.Volvo'>, <class '__main__.Car'>, <class 'object'>]
[<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'>]
파이썬 클래스의 상속과 다중상속에 대해서 학습하였습니다.
특히, 시니어 개발자로 성장하기 위해서 코드의 복잡도에 관한 부분도 많이 신경써야 한다는 강사님의 조언이 큰 도움이 되는 것 같았습니다. 적절하게 상속과 다중상속을 활용하여 좋은 시니어 개발자로의 성장을 목표로 패스트 캠퍼스 파이썬 인강 계속 됩니다!
패스트캠퍼스 파이썬 인강 자세한 내용은 아래 링크를 참고해 주세요!
'Python Basics' 카테고리의 다른 글
| [패스트캠퍼스 수강 후기] 파이썬 인강 자기계발 챌린지 11 회차 미션 (0) | 2020.06.04 |
|---|---|
| [패스트캠퍼스 수강 후기] 파이썬 인강 자기계발 챌린지 10 회차 미션 (0) | 2020.06.03 |
| [패스트캠퍼스 수강 후기] 파이썬 인강 자기계발 챌린지 8 회차 미션 (0) | 2020.06.01 |
| [패스트캠퍼스 수강 후기] 파이썬 인강 자기계발 챌린지 7회차 미션 (0) | 2020.05.31 |
| [패스트캠퍼스 수강 후기] 파이썬 인강 자기계발 챌린지 6 회차 미션 (0) | 2020.05.30 |