Em outras linguagens de programação é comum o uso de interface, com Python em muitos caso não se faz necessário implementar ‘interfaces’, entretanto em aplicações maiores é uma ótima prática implementar uma ‘interface’. Nesse artigo vou demostrar como podemos implementar ‘interface’ com ABC ou protocol.
pip install pytest
Depois é somente rodar o pytest
pytest
Para estudo de interface temos um cenário de envio de mensagem que pode ser enviado por SMS e email. Pensando que cada forma de envio e cada provedor de envio de mensagem tem suas especificidades. Temos uma interface usando ABC e outro com o Protocol esse exercício vem mostrar as características de cada um.
Interfaces com a biblioteca ABC é a forma mais antiga que o Protocol. Tudo o que é necessário para implementar essa interface
class Dispatch(ABC):
@abstractmethod
def send(self) -> None:
"""Send msg"""
@abstractmethod
def confirm_receive(self):
"""Message can be confimed receive"""
Com a nossa classe criada a única coisa que precisamos fazer é as nossas classes DispatchEmail E DispatchSMS herdem dela. E elas precisam implementar os métodos send e confirm_receive