1. 클래스 상속
◾ 클래스는 또 다른 클래스의 모든 기능을 상속하여 사용 가능!!
◾ calss 변수명(상속하는 class) 작성하면 상속 완료
class NormalCar:
def drive(self):
print('[Normal Car] drive() called!!')
def back(self):
print('[Normal Car] back() called!!')
class TurboCar(NormalCar):
def turbo(self):
print('[TurboCar] turbo() called!!')
myTurbo = TurboCar()
myTurbo.turbo()
myTurbo.drive()
myTurbo.back()
----------------------------------------------------------------
[TurboCar] turbo() called!!
[Normal Car] drive() called!!
[Normal Car] back() called!!
📌 class 다중 상속 가능!!
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
myCar = Car()
myCar.drive()
myCar.turbo()
myCar.fly()
-------------------------------------------
drive() method called!!
turbo() method called!!
fly() method called!!
2. 생성자
◾ 객체가 생성될 때 생성자를 호출하면 __init()<가 자동 호출
◾ cal = Calculaotr() → Calculaotr() 생성자 호출 → Calculaotr __init__() 호출
class Calculator:
def __init__(self):
print('[Calculator] __init__() called!!')
cal = Calculator()
---------------------------------------------------
[Calculator] __init__() called!!
📌 상위 클래스의 속성을 초기화하기 위해서 __init__ 또는 super() 이용
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!!')
P_Class.__init__(self, cNum1, cNum2)
self.cNum1 = cNum1
self.cNum2 = cNum2
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)
print(f'cal.num1 : {cls.cNum1}')
print(f'cal.num2 : {cls.cNum2}')
---------------------------------------------------
[C_Class] __init__() Called!!
[P_Class] __init__() Called!!
cal.num1 : 10
cal.num2 : 20
3. 오버라이딩
◾ 오버라이딩 : 하위 클래스에서 상위 클래스의 메서드를 재정의
class Robot:
def __init__(self, c, h, w):
self.color = c
self.height = h
self.weight = w
def fire(self):
print('미사일 발사')
class NewRobot(Robot):
def __init__(self, c, h, w):
super().__init__(c, h, w)
def fire(self):
print('레이저 발사')
myRobot = NewRobot('red', 200, 300)
myRobot.fire()
----------------------------------------------------------------
레이저 발사
4. 추상 클래스
◾ 상위 클래스에서 하위 클래스에 메서드 구현을 강조
from abc import ABCMeta
from abc import abstractmethod
class AirPlane(metaclass=ABCMeta):
@abstractmethod
def flight(self):
pass
def foward(self):
print('전진')
class Airliner(AirPlane):
def __init__(self,c):
self.color = c
def flight(self):
print('시속 400km/h 비행')
al = Airliner('red')
al.flight()
al.foward()
-----------------------------------------------------
시속 400km/h 비행
전진