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

Erro no contrutor série

Traceback (most recent call last):
  File "/home/mitz/Desktop/POO-Python/avancando_no_poo/main.py", line 20, in <module>
    class Serie:
  File "/home/mitz/Desktop/POO-Python/avancando_no_poo/main.py", line 33, in Serie
    atlanta = Serie("atlanta", 2018, 2)
NameError: name 'Serie' is not defined
Codigo:
class Filme:
    def __init__(self, nome, ano, duracao):
        self.__nome = nome.title()
        self.ano = ano
        self.duracao = duracao
        self.__likes = 0
    def dar_like(self):
        self.__likes += 1

    @property
    def likes(self):
        return self.__likes
    @property
    def nome(self):
        return self.__nome
    @nome.setter
    def nome(self, novo_nome):
        self.__nome = novo_nome.title()

class Serie:
    def __init__(self, nome, ano, temporadas):
        self.__nome = nome.tiitle()
        self.ano = ano
        self.temporadas = temporadas
        self.__likes = 0

    def dar_like(self):
        self.__likes += 1

    vingadores = Filme("vingadores - guerra infinita", 2018, 160)
    print(f"Nome: {vingadores.nome} - Ano: {vingadores.ano} - Duração: {vingadores.duracao}min - Likes: {vingadores.likes}")

    atlanta = Serie("atlanta", 2018, 2)

    print(f"Nome: {atlanta.nome} - Ano: {atlanta.ano} - Temporadas: {atlanta.temporadas} - Likes: {atlanta.likes}")
1 resposta
solução!

O código está com identação errada. O trecho que você está tentando executar está identado no mesmo nível da classe Serie. Portanto, ao tentar instanciar o objeto de Serie, a classe ainda não foi definida.

Para corrigir o erro basta tirar a identação das últimas quatro linhas. (Corrigi também alguns erros que tinham na classe Serie para o código funcionar)

class Filme:
    def __init__(self, nome, ano, duracao):
        self.__nome = nome.title()
        self.ano = ano
        self.duracao = duracao
        self.__likes = 0
    def dar_like(self):
        self.__likes += 1

    @property
    def likes(self):
        return self.__likes
    @property
    def nome(self):
        return self.__nome
    @nome.setter
    def nome(self, novo_nome):
        self.__nome = novo_nome.title()

class Serie:
    def __init__(self, nome, ano, temporadas):
        self.__nome = nome.title()
        self.ano = ano
        self.temporadas = temporadas
        self.__likes = 0

    @property
    def likes(self):
        return self.__likes
    @property
    def nome(self):
        return self.__nome

    def dar_like(self):
        self.__likes += 1

vingadores = Filme("vingadores - guerra infinita", 2018, 160)
print(f"Nome: {vingadores.nome} - Ano: {vingadores.ano} - Duração: {vingadores.duracao}min - Likes: {vingadores.likes}")

atlanta = Serie("atlanta", 2018, 2)

print(f"Nome: {atlanta.nome} - Ano: {atlanta.ano} - Temporadas: {atlanta.temporadas} - Likes: {atlanta.likes}")