Python 추상클래스 정리하기

hodu·2022년 9월 24일
0

python

목록 보기
3/17
post-thumbnail

추상클래스란?

  • 메서드 목록만 있는 클래스를 의미한다.
  • 왜 사용할까? : 상속받은 클래스에서 메서드 구현을 강제하기 위해서 사용

👉 자세히 말해보자면,
자식 클래스에서 메서드 구현이 되어있지 않으면 오류를 발생시킨다. 이러한 특성 때문에 프로그램을 표준화하기 용이하고 유지보수도 쉽다.

코드를 통해 자세한 내용을 살펴보자.
지난 포스팅(클래스와 인스턴스의 차이)에서 사용했던 와플 예제를 재사용해보겠다.

from abc import * # 상속 클래스 

# 부모클래스
class WaffleBase(metaclass=ABCMeta):
	@abstractmethod
    def 반죽하기(self):
    	pass
        
    @abstractmethod
    def 굽기(self):
    	pass

# 자식클래스
class Waffle(WaffleBase):
	def 반죽하기(self):
    	print('밀가루로 반죽을 합니다.')
        
strawberry_waffle = Waffle()
strawberry_waffle.반죽하기()

이렇게 작성하면 에러가 발생한다.
왜냐하면 부모클래스에서 @abstractmethod로 작성된 메서드가 반죽하기, 굽기 총 2개인데
자식클래스에서 딱 하나만 만들어줬기 떄문에 에러가 발생한다.

즉, 데코레이터로 @abstractmethod가 붙어있는 메서드들은 자식클래스에서 꼭 만들어줘야 한다.


(추가)

부모클래스에서 메서드에 pass를 사용하는 이유?

추상클래스는 객체를 만들 수 없다. 오로지 상속만을 위한 기능이기 때문에 호출을 받을 일이 없기 때문이다.
그래서 pass를 사용하여 보통 빈 메서드로 둔다.

원래는 super().메서드명()을 이용해 오버라이딩(재정의) 할 수 있음

profile
안녕 세계!

0개의 댓글