Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

erro em likes

olá! já revisei varias vezes o código, mas ainda não consegui resolver. quando executo ele retorna o seguinte erro: fearStreet.dar_like() AttributeError: 'Filme' object has no attribute 'dar_like'

class Programa: # trabalhando com herança
    def __init__(self, nome, ano):
        self._nome = nome.title()
        self.ano = ano
        self._likes = 0

        @property # facilitando o uso de atributos privados
        def likes(self):
            return self._likes

        def dar_like(self): # definindo método
            self._likes += 1

        @property
        def nome(self):
            return self._nome

        @nome.setter
        def nome(self, novo_nome):
            self._nome = novo_nome.title()

class Filme(Programa):
    def __init__(self, nome, ano, duracao):
        super().__init__(nome, ano) # chamando método da classe mãe
        self.duracao = duracao

    def __str__(self):
        return f'{self._nome} - {self.ano} - {self.duracao} min - {self._likes} likes'

class Serie(Programa):
    def __init__(self, nome, ano, temporadas):
        super().__init__(nome, ano)
        self.temporadas = temporadas

    def __str__(self):
        return f'{self._nome} - {self.ano} - {self.temporadas} temporadas - {self._likes} likes'


fearStreet = Filme('Fear Street', 2021, 107)
fearStreet.dar_like()
gg = Serie('gilmore girls', 2000, 7)
gg.dar_like()

lista = [fearStreet, gg]
for programa in lista:
    print(programa)

obrigada desde já :)

2 respostas
solução!

O problema do seu código está na indentação, ou seja, todos os métodos estão declarados como pertencentes do método __init__ da classe Programa.

Para solucionar basta remover os espaços até que os métodos fiquem na mesma indentação do método init

Errado:

def __init__():
    def dar_like():  
        pass

Certo:

 def __init__():

 def dar_like():
     pass

não acreditokkkkkkkkkkkkk tenho que tomar mais cuidado nisso. obrigada!