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

Python não acha meu atributo

class Programa:
    def __init__(self, nome, ano):
        self._nome = nome.title()
        self.ano = ano
        self._likes = 0

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

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

    def like(self):
        self._likes += 1


class Filme(Programa):
    def __init__(self, nome, ano, diretor):
        super().__init__(nome, ano)
        self.diretor = diretor


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


pulp_fiction = Filme("pulp fiction", 1994, "Quentin Tarantino")
pulp_fiction.like()
breaking_bad = Serie("breaking bad", 2008, "Vince Gilligan")
breaking_bad.like()
breaking_bad.like()
playlist = [Filme, Serie]

for programa in playlist:
    detalhes = programa.criador if hasattr(programa, "criador") else programa.diretor
    print(f"{programa.nome} - {detalhes} : {programa.likes}")

Quando vou rodar o código me aparece a mensagem:

  File "C:\Users\pmelo\PycharmProjects\pythonProject\projects\oo2\model.py", line 39, in <module>
    detalhes = programa.criador if hasattr(programa, "criador") else programa.diretor
AttributeError: type object 'Filme' has no attribute 'diretor'
1 resposta
solução!

Oi Pablo, descobri o problema.

O problema está na crianção da lista playlist. Você fez uma lista com o nome das classes, mas o nome das classes sozinhas não fazem nada, logo, não vai ter um atributo. O correto seria fazer a lista com os objetos que você criou [pulp_fiction, breaking_bad]