1
resposta

Duvida da aula

ola professor não esta funcionar

class programa():
    def __init__(self, nome, ano):
        self.__nome = nome.title()
        self.ano = ano
        self.__like = 0

        @property
        def likes(self):
            return self._likes

        def dar_likes(self):
            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):
        self._nome = nome.title()
        self.ano = ano
        self.duracao = duracao
        self._likes = 0


class Serie(programa):
    def __init__(self, nome, ano, temporadas):
        self._nome = nome.title()
        self.ano = ano
        self.temporada = temporadas
        self._likes = 0
vingadores= Filme("vingadores guerra infinita",2018,160)
vingadores.dar_likes()
print(f"Nome: {vingadores.nome} - Ano {vingadores.ano}"
        f" - Duracao {vingadores.duracao} - Likes {vingadores.likes}")

atlanta = Serie("atlanta", 2018, 2)
atlanta.nome="atlanta de glover"
atlanta.dar_likes()
atlanta.dar_likes()
C:\Users\hpp\PycharmProjects\Python3OO2\venv\Scripts\python.exe C:/Users/hpp/PycharmProjects/Python3OO2/Modelo.py
Traceback (most recent call last):
  File "C:/Users/hpp/PycharmProjects/Python3OO2/Modelo.py", line 39, in <module>
    vingadores.dar_likes()
AttributeError: 'Filme' object has no attribute 'dar_likes'

Process finished with exit code 1
1 resposta

Oi Joel,

o problema principal é a indentação na classe programa. Repare que os métodos likes(), dar_like(), nome() etc ficaram todos dentro do método __init__ . A indentação desses métodos está errada.

Além disso, tenha cuidado com os nomes dos atributos na classe programa, tem _like e _likes e __nome e _nome.

Tudo bem?

abs