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?
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.