320x100
# 추상클래스
# 상위 클래스에서 하위 클래스에 메서드 구현을 강요한다.
from abc import ABCMeta
from abc import abstractmethod
# 1. 정의가 안되어있고
# 2. 정의를 하위 클래스에서라도 해야한다면
# 정의가 되어야하는 강제성을 지닌 상위 개념의 클래스에
# AirPlane(metaclass=ABCMeta)이런식으로 해준다.
class AirPlane(metaclass=ABCMeta):
# 이것이 첫번째 작업이다.
# 두번째 작업으로는 정의가 되어야할 함수에 표시를 해줘야한다.
@abstractmethod
# 이렇게
def flight(self):
pass
def forward(self):
print('전진')
def backward(self):
print('후진')
# 위의 flight가 정의가 안되어있으니 반드시 여기서 정의하고 가라.
# 라는 일종의 메모같은거다
class AirLiner(AirPlane):
def __init__(self,c):
self.color = c
def flight(self):
print('시속 400km/h 비행')
# 위에서 정의에 대한 강제성을 띄고 있는걸 만들어줬더니 작동오류가 안생긴다.
# 다만, 예감하건데 제2, 제3의 추가 상속받는 클래스가 늘어가면 거기에도
# 이런 짓을 계속해야하니 보통의 경우엔 작업을 중단할때 표시해주는 메모 용도로
# 사용해주고 왠만하면 메인 부모 클래스에 구현을 해주는게 바람직 할 것같다는 생각이 든다.
class FighterPlane(AirPlane):
def __init__(self, c):
self.color = c
def flight(self):
print('시속 800km/h 비행')
al = AirLiner('red')
al.flight()
al.forward()
al.backward()
fl = FighterPlane('red')
fl.flight()
fl.forward()
fl.backward()
300x250
'개발일지 > Python' 카테고리의 다른 글
삽입정렬 알고리즘 (오름차순, 내림차순) (0) | 2022.05.21 |
---|---|
파이썬 [복기] 무한반복 계산기, 종료입력으로 종료. (0) | 2022.05.21 |
파이썬 class(클래스) 상속 기초원리6 재정의(오버라이딩) (0) | 2022.05.20 |
파이썬 class 기초원리5 다중상속 (음.. 이건 난해하다) (0) | 2022.05.20 |
파이썬 class 상속 기초원리4 init 메소드 기초활용 super() (0) | 2022.05.20 |