クラスとは異なり、動作の一覧だけを列挙したもの。
– 中身ができていなくても、暫定的に開発が進められる
– 実装を気にしない、後から修正可能
– 変更しやすくなる
– モデリング力が鍛えられる
import abc
class IMailSender(metaclass=abc.ABCMeta):
@abc.abstractmethod
def send(self, mail: Mail) -> None:
raise NotImplementedError()