Summarization
- 클래스 상속을 통해 다른 클래스의 기능을 활용할 수 있으며, 개발시간 단축의 효과가 있다.
- 생성자 : 객체가 생성될 때 생성자를 호출하는 것
- 오버라이딩 : 하위 클래스에서 상위 클래스의 Method를 재정의 하는 것
Contents
- 클래스 상속 : 다른 클래스의 기능을 활용할 수 있다
- 상속 :
Class3
이 Class2
를 상속한다 > Class3
에서 Class2
의 모든 기능을 사용할 수 있다.
개발시간 단축의 효과
class NormalCar:
def drive(self):
print('[NormalCar] drive() called!')
def back(self):
print('[NormalCar] back() called!')
class TurboCar(NormalCar):
def turbo(self):
print('[TurboCar] turbo() called!')
- 생성자 : 객체가 생성될 때 생성자를 호출하면
__init__()
가 자동 생성된다.
__init__()
가 속성을 초기화 한다.
- 방법 1 : 초기값을 대입하여 고정
- 방법 2 : 초기값을 init 내 고정
- 기능의 경우, 상속하면 바로 사용 가능하나, 속성은
__init__
method를 호출해야 속성이 초기화되기 때문에 사용 가능,
__init__
메서드를 호출하거나, super()를 사용하여 속성을 호출할 수 있다.
super() : 상위 클래스(Class)의 속성(Attribute)을 초기화하기 위해 이용
class P_Class:
def __init__(self, pNum1, pNum2):
print('[P_class] __init__() called!')
self.pNum1 = pNum1
self.pNum2 = pNum2
class C_Class(P_Class):
def __init__(self, cNum1, cNum2):
print('[C_class] __init__() called!')
super().__init__(cNum1, cNum2)
self.cNum1 = cNum1
self.cNum2 = cNum2
cls = C_Class(10, 20)
- 다중 상속 : 2개 이상의 클래스를 상속하는 것을 의미
- 다중 상속을 많이 할 경우, 헷갈릴 우려가 발생
- 꼭 필요한 경우 사용, 남발 X
class Car01:
def drive(self):
print('drive() method called!')
class Car02:
def turbo(self):
print('turbo() method called!')
class Car03:
def fly(self):
print('fly() method called!')
class Car(Car01, Car02, Car03):
def __init__(self):
pass
- 오버라이딩 : 하위 클래스에서 상위 클래스의 Method를 재정의(override) 하는 것