Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

TypeError: 'str' object is not callable

Alguém pode me ajudar? Não consigo achar o motivo desse erro (TypeError: 'str' object is not callable)

class Programa:

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

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

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

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


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.temporadas = temporadas

vingadores = Filme('Vingadores', 2018, 160)
vingadores.nome()
2 respostas
solução!

Oi Fernando, tudo bem?

O erro está acontecendo porque você está chamando vingadores.nome() da forma como se chama uma função, mas apesar de você definir a função nome você não conseguirá chamá-la desta forma. A maneira correta é chamar a função nome como se estivesse acessando uma propriedade da classe diretamente e esta é uma das razões de utilizarmos o decorador property. Ou seja:

vingadores.nome

Neste caso para saber o valor da variável _nome ao invés de chamar vingadores.nome() você pode printar o retorno da função nome diretamente(sem o uso dos parênteses):

print(vingadores.nome)

Qualquer dúvida é só falar. Abraços e bons estudos!

Deu certo! Muito obrigado

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