2
respostas

código com erro!! alguem pode identificar o erro, por favor? nao entendo

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

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


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


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


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


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


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


def __str__(self):
    return f'Programa: {self.nome} - Ano: {self.ano}'

class Filme(Programa): def init(self, nome, ano, duraçao): super().init(nome, ano) self.duraçao = duraçao

def __str__(self):
    return f'Filme: {self.nome} - Ano: {self.ano} - Duraçao: {self.duraçao} minutos '

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

@property
def temporadas(self):
    return self.temporadas


@temporadas.setter
def adicionar_temporadas(self):
    self.temporadas +=1




def __str__(self):
    return f'Serie: {self.nome} - Ano: {self.ano} - Temporadas: {self.temporadas}'

filme = Filme("quatro vidas de um cachorro", 2017, 110) serie = Serie("the whalking dead", 2010, 11) lista = [filme, serie]

for programa_tv in lista: print(programa_tv)

2 respostas

Há alguns erros no código que precisam ser corrigidos. Vamos corrigi-los:

  1. Na classe Programa, o método __init__ está com um erro de indentação. Certifique-se de que todos os métodos da classe estão indentados corretamente.

  2. Na classe Programa, você está tentando definir dois métodos likes e nome com o decorador @property. Isso não é necessário; você só precisa de um método para cada. Além disso, o método likes não deve se chamar igual à propriedade _likes. Vou corrigir isso.

  3. Na classe Serie, o método adicionar_temporadas não precisa ser um setter, pois não está recebendo nenhum valor externo para atribuir à propriedade. Além disso, você precisa de um método para adicionar temporadas. Vou corrigir isso.

Aqui está o código corrigido:

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

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

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

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

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

    def __str__(self):
        return f'Programa: {self.nome} - Ano: {self.ano}'


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

    def __str__(self):
        return f'Filme: {self.nome} - Ano: {self.ano} - Duração: {self.duracao} minutos'


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

    @property
    def temporadas(self):
        return self._temporadas

    def adicionar_temporadas(self):
        self._temporadas += 1

    def __str__(self):
        return f'Serie: {self.nome} - Ano: {self.ano} - Temporadas: {self.temporadas}'


filme = Filme("Quatro Vidas de um Cachorro", 2017, 110)
serie = Serie("The Walking Dead", 2010, 11)
lista = [filme, serie]

for programa_tv in lista:
    print(programa_tv)

Essas correções devem ajudar a resolver os problemas no seu código.

Caso tenha conseguido esclarecer suas dúvidas, fico feliz em ter ajudado. Estou à disposição para qualquer outra questão que possa surgir. Um abraço! Se este post foi útil, por favor, marque como solucionado ✓. Desejo a você excelentes estudos!