추상 클래스 만들기
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