Olá Thiago, tudo bem com você?
Peço desculpas pela demora no retorno.
A sintaxe de declaração de uma classe do tipo abstrata fazendo o uso do método mágico era utilizada na versão 2.6 do Python, como apresentado na seguinte documentação.
Trabalhando com a versão Python2.6 a declaração abaixo, tornará obrigatória a implementação de todos os métodos abstratos da classe mãe, caso não seja realizada a implementação, será gerado erro de tipo (TypeError).
class TemplateDeImpostoCondicional(object):
__metaclass__ = ABCMeta
@abstractmethod
def deve_usar_maxima_taxacao(self, orcamento):
pass
Caso esteja realizando o teste do modelo acima, com a versão do Python 3, não será criado uma classe abstrata, devido a mudança na sintaxe de declaração, assim não é gerado erro quando não fazemos a implementação dos métodos abstratos nas classes filhas.
Criarmos uma classe abstrata para o nosso projeto não é obrigatório, tudo dependerá do nosso objetivo para com o projeto que estamos criando, mas a partir do momento em que optamos por criá-la devemos implementar seus métodos abstratos nas classes filhas. O uso das classes abstratas permitirá uma melhor organização do código, informando quais os métodos obrigatórios para as classes filhas, evitando assim que determinado método essencial para o funcionamento do código não seja implementado.
Abraços e bons estudos.
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!