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

Erro no código

Pessoal, estou com um erro no meu código e não consigo encontrar:

File "C:\Users\pedro\OneDrive\Área de Trabalho\Lista de Exercicios\modelos.py", line 35, in print(f'Nome: {atlanta.nome} - Ano: {atlanta.ano}') AttributeError: 'Serie' object has no attribute 'nome'

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):
        super().__init__(nome, ano)
        self.duracao = duracao

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

vingadores = Filme('Vingadores - guerra infinita', 2018, 160)
print(vingadores.nome)

atlanta = Serie('atlanta', 2018, 2)
print(f'Nome: {atlanta.nome} - Ano: {atlanta.ano}')
1 resposta
solução!

Olá Pedro, tudo bem com você?

O erro de atributo (AttributeError) está sendo apresentado devido ao não reconhecimento do método nome presente na classe Programa, devido a indentação (espaços) os métodos likes, dar_likes e nome estão dentro do método inicializador (__init__).

Será necessário corrigir a indentação desses métodos para que o código seja executado corretamente.

Selecione os métodos likes, dar_likes e nome e seus conteúdos e pressione shift + Tab, assim será removido os espaços em excesso retirados os métodos de dentro do método inicializador.

A classe Programa deve ficar conforme apresentado abaixo.

Classe Programa para comparação

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

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

    def dar_likes(self):
        self._like += 1

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

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

No código, será necessário realizar outra mudança, acima o código já está modificado, nos métodos likes e dar_likes, devemos fazer referência ao atributo do objeto self._like(sem o S no final), peço que modifique também esses dois pontos, trocando o self._likes por self._like.

Peço que verifique os pontos listados acima, modificando a indentação e a referência para o atributo self._like, salve o arquivo e execute-o.

Caso o erro permaneça ou tenha dúvidas, encontro-me à disposição.

Abraços e bons estudos.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software