추상 클래스는 강제할 메서드의 목록만을 가진 클래스이다. 여기서 강제할 메서드란 해당 클래스를 상속받은 클래스는 부모 클래스의 모든 메서드를 구현해야 하는 것을 의미한다.
추상 클래스를 만들기 위해서는 abc 모듈이 필요하다. abc는 abstract base classd의 약자이다.
클래스의 metaclass는 ABCMeta로 지정하고, 메서드를 만들 때는 @abstractmethod를 붙여서 추상 메서드로 지정해야 한다. 추상 클래스는 인스턴스로 만들 수 없으므로 추상 메서드는 빈 메서드로 만들면 된다.
from abc import *
class Animal(metaclass = ABCMeta):
@abstractmethod
def bark(self):
pass
@abstractmethod
def eat(self):
pass
class Dog(Animal):
def bark(self):
print("짖다.")
def eat(self):
print("먹다.")
dog = Dog()
dog.bark() # 짖다.
dog.eat() # 먹다.
추상 클래스는 상속에만 사용하며, 파생 클래스에서 반드시 구현해야 할 메서드를 정해줄 때 사용한다.