1
resposta

Instrutor errado na dúvida anterior

Na dúvida "Códigos parecidos e o Template Method: classes abstratas", o instrutor não solucionou a questão do aluno de forma adequada. O que acontece é que com esse código:

class Template_de_imposto_condicional(object):

    #classe abstrata
    __metaclass__ = ABCMeta

Realmente aí não vai aparecer nada. Agora se ele colocar a seguinte sintaxe:

class Template_de_imposto_condicional(metaclass=ABCMeta):

Aí sim o programa vai acusar o erro.

1 resposta

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!