반응형
- 추상클래스란 미구현 추상메소드를 한개 이상 가지며, 자식클래스에서 해당 추상 메소드를 반드시 구현하도록 강제합니다.
- 상속받은 클래스는 추상메소드를 구현하지 않아도, import할 때까지 에러는 발생하지 않으나 객체를 생성할 시 에러가 발생합니다.
- 추상메소드는 생략하면 기본적인 클래스 기능은 동작합니다만, 추상메소드를 추가한 후에는 객체를 생성하면 에러가 발생합니다.
- abc 모듈을 import해야 합니다. abc는 Abstract Base Class의 약자입니다.
- 추상 메소드 위에 @abstractmethod 데코레이터를 달아줍니다.
- 추상클래스의 매개변수에 metaclass=ABCMeta를 입력해줍니다.
예제를 한 번 봅시다.
from abc import *
class AbstractPerson(metaclass=ABCMeta):
@abstractmethod
def sleep(self):
pass
@abstractmethod
def eat(self):
pass
class Walter(AbstractPerson):
def sleep(self):
print('zzZ')
def eat(self):
print('냠냠')
위의 코드에서 추상 메소드를 구현하지 않으면 에러가 난다.
추상클래스를 공부하며 어려운 부분이 왜 사용하냐 인데 이는 상위 클래스인 추상클래스를 이용하여 코드를 재사용하면서 시간을 절약할 수 있고, 수정을 할 경우 다른 코드의 영향도를 적게하기 위하여 사용한다. 그리고 추상 클래스는 하위 클래스에게 추상메소드를 구현하라고 강요하는 역할을 한다.
반응형
'Python' 카테고리의 다른 글
디자인 패턴 (0) | 2022.04.14 |
---|---|
OOP 5대 원칙(python 예제 포함) (0) | 2022.04.09 |
덕 타이핑이란? (0) | 2022.04.09 |
opencv cv2.imshow 에러 해결방법 (0) | 2022.03.31 |
pix2pix augmentation (0) | 2022.03.31 |