반응형
  • 추상클래스란 미구현 추상메소드를 한개 이상 가지며, 자식클래스에서 해당 추상 메소드를 반드시 구현하도록 강제합니다.
  • 상속받은 클래스는 추상메소드를 구현하지 않아도, 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

+ Recent posts