Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida heranças e polimorfismo

No atividade 5 da aula 3 aparece o seguinte código:

class Relatorio:
    def gera_relatorio(self):
        print('Relatório geral')

class RelatorioUsuarios(Relatorio):
    def gera_relatorio(self):
        print('Relatório geral')

class RelatorioCustos(Relatorio):
    def gera_relatorio(self):
        print('Relatório geral')

relatorio1 = RelatorioUsuarios()
relatorio2 = RelatorioCustos()
relatorio3 = RelatorioUsuarios()
relatorio4 = RelatorioUsuarios()

relatorios = [relatorio1, relatorio2, relatorio3, relatorio4] 
for rel in relatorios:
    rel.gera_relatorio()

Neste caso, caso eu queira otimizar o código para as classes filhas utilizarem o método gera_relatorio da classe mãe, sem necessidade de repetição do mesmo código em RelatorioUsuarios e RelatorioCustos, como ficaria o código?

1 resposta
solução!

Caso não seja criado o método nas classes filhas com o mesmo nome da classe mãe, quando você instanciar uma das classes filhas e tentar acessar o método gera_relatorio() o código executado será o da classe mãe.

Então para utilizar o método da classe mãe é apenas definir a herança:

class Relatorio:
    def gera_relatorio(self):
        print('Relatório geral')

class RelatorioUsuarios(Relatorio):
    pass

rel = RelatorioUsuario()
rel.gera_relatorio() # irá retornar 'Relatório geral'