추상 클래스 만들기
import abc
class BaseClass(metaclass=abc.ABCMeta):
@abc.abstractmethod
def run(self):
pass
## 아래처럼
class BaseClass:
__metaclass__ = abc.ABCMeta
@abc.abstractmethod
def run(self):
pass
class ChildClass(BaseClass):
def run(self):
print("hello world!")
a = ChildClass()
위와 같이 metaclass로 해당 클래스가 추상 클래스라는 것을 명시한다.
이후 추상클래스로 쓰고 싶은 메서드에 abstractmethod 데코레이터를 달면 된다.
만약 상속받는 클래스에서 추상클래스를 구현하지 않으면 아래와 같이 에러가 뜬다.
Traceback (most recent call last):
File "/var/task/main.py", line 12, in <module>
a = ChildClass()
TypeError: Can't instantiate abstract class ChildClass with abstract method run