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

Restaurante() takes no arguments

boa tarde, meu código esta dando este erro:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

e meu código esta assim:

class Restaurante:
restaurantes = []

def __init__(self, nome, categoria):
  self.nome = nome
  self.categoria = categoria 
  self._ativo = False
  Restaurante.restaurantes.append(self)

def __str__(self):
   return f'{self.nome} | {self.categoria}'

def listar_restaurantes():
    for restaurante in Restaurante.restaurantes:
       print(f'{restaurante.nome} | {restaurante.categoria} | {restaurante.ativo}')
       
@property
def ativo(self):
return '⌧' if self.ativo else '☐'

restaurante_praca = Restaurante('Praça', 'Gourmet')
restaurante_pizza = Restaurante('Pizza', 'Italiana')

Restaurante.listar_restaurantes()
2 respostas
solução!

Olá Vitor, tudo joia?

Pelo erro "TypeError: Restaurante() takes no arguments", parece que o Python não está reconhecendo o método __init__ como o construtor da classe Restaurante. Isso geralmente acontece quando a indentação do método __init__ está incorreta, fazendo com que ele não seja considerado parte da classe.

Verifique se a indentação do seu código está correta. O método __init__ deve estar indentado em relação à definição da classe. Aqui está uma versão corrigida do seu código:

class Restaurante:
    restaurantes = []

    def __init__(self, nome, categoria):
        self.nome = nome
        self.categoria = categoria 
        self._ativo = False
        Restaurante.restaurantes.append(self)

    def __str__(self):
        return f'{self.nome} | {self.categoria}'
    
    def listar_restaurantes():
        for restaurante in Restaurante.restaurantes:
            print(f'{restaurante.nome} | {restaurante.categoria} | {restaurante.ativo}')
           
    @property
    def ativo(self):
        return '⌧' if self._ativo else '☐'
   
restaurante_praca = Restaurante('Praça', 'Gourmet')
restaurante_pizza = Restaurante('Pizza', 'Italiana')

Restaurante.listar_restaurantes()

Certifique-se de que todos os métodos dentro da classe Restaurante estão devidamente indentados. Isso deve resolver o problema.

Espero ter ajudado e bons estudos!

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

Funcionou, só precisei copiar o código que você mandou e deu certo.