Geralmente os métodos abstratos não tem implementação, possuem somente assinatura. Em python os métodos abstratos podem ter implementação? o que vai caracterizar ele como abstrato? O decorator @abstractmethod somente?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Geralmente os métodos abstratos não tem implementação, possuem somente assinatura. Em python os métodos abstratos podem ter implementação? o que vai caracterizar ele como abstrato? O decorator @abstractmethod somente?
Olá Isabela, tudo bem com você?
Um método abstrato será definido pelo decorator @abstractmethod, quando uma classe possui um ou mais métodos abstratos suas classes filhas deverão possuir os mesmos métodos declarados.
Caso seja necessário podemos implementar o método abstrato na classe mãe, essa implementação ficará disponível para invocação nas classes filhas, devemos invocar o método da classe mãe com o uso do super() dentro do método da classe filha. Abaixo um exemplo com a implementação de um método abstrato da classe abstrata.
from abc import ABCMeta, abstractmethod
class ClasseAbstrataExemplo(metaclass=ABCMeta):
@abstractmethod
def imprima(self):
print("Implementação do método abstrato na classe abstrata.")
class ClasseFilha(ClasseAbstrataExemplo):
def imprima(self):
super().imprima()
print("Método implementado na classe filha, sem uso da implementação da classe mãe.")
obj_um = ClasseFilha()
obj_um.imprima()
Resultado
Implementação do método abstrato na classe abstrata.
Método implementado na classe filha, sem uso da implementação da classe mãe.Acima é apresentado a chamada de um método abstrato implementado em um método da classe filha, o código implementado na classe mãe será executado e logo após é dado a continuidade na execução do código implementado na classe filha.
Fico à disposição em caso de dúvidas.
Abraços e bons estudos.