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

Como herdar trechos de funcionalidades de outras classes?

Olá tudo bem? Minha dúvida é referente a herança. É possivel herdar trechos de codigo de outra classe?

No exemplo abaixo tenho uma Super Class Programa ela possui um método str que retorna uma string de nome + ano + like de algum programa.

Na classe filha Filme que herda da classe Programa temos acesso ao método str que herdamos, ate ai tudo ótimo. O que gostaria é de anexar uma string junto ao método que é herdado. Pois herdamos uma string nome + ano + like gostaria de colocar a duração que é um atributo somente da classe filha, é possivel fazer? Coloquei no exemplo abaixo.

class Programa():  # Super Class
    def __init__(self, nome: str, ano: int):
        self._nome = nome.title()
        self.ano = ano
        self._likes: int = 0

    @property
    def likes(self) -> int:
        return self._likes

    def dar_like(self) -> None:
        self._likes += 1

    @property
    def nome(self) -> str:
        return self._nome

    @nome.setter
    def nome(self, novo_nome: str) -> None:
        self._nome = novo_nome.title()

    def __str__(self) -> str:
        nome: str = f'\nNome: {self._nome}\n'
        ano: str = f'Ano: {self.ano}\n'
        like: str = f'Likes: {self._likes} Likes\n'
        return nome + ano + like


class Filme(Programa):
    def __init__(self, nome: str, ano: int, duração: int):
        # com esta ação estamos usando nome e ano da classe mãe Programa
        super().__init__(nome, ano)
        self.duração = duração

    def __str__(self) -> str:
        duração: str = f'Duração: {self.duração} min\n'
        return # duvida aqui!!! Seria possível herdar da class Programa o método __str__ e anexar ao método __str__ da class filme somente a duração? Assim não repetiriamos codigo.

Desde já agradeço a ajuda. Obrigado.

1 resposta
solução!

Seria algo assim:

    def __str__(self) -> str:
        duracao: str = f'Duração: {self.duracao} min\n'
        return super(Filme, self).__str__() + duracao

OBS: troquei çã para ca