1
resposta

Método __str__ não exibe a string, só as referências

Olá, boa tarde!

O método str não está exibindo os dados da fstring, apenas as referências dos objetos na memória! Alguma sugestão do que pode ser?! :(

class Restaurante:
 
 def __init__(self, nome, categoria) -> None:
    self.nome = nome
    self.categoria = categoria
    self.ativo = False

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

restaurante_praca = Restaurante('Praça', 'Gourmet')
restaurante_pizza = Restaurante('Pizza Express', 'Italiano')
restaurante_japa = Restaurante('Japa Sushi', 'Japonesa')

restaurantes = [restaurante_praca, restaurante_pizza, restaurante_japa]

print(restaurante_praca)
print(restaurante_pizza)
print(restaurante_japa)

O resultado é esse aqui: ![](Insira aqui a descrição dessa imagem para ajudar na acessibilidade )

1 resposta

Olá Fernanda, tudo bem com você?

O comportamento apresentado está ocorrendo devido ao método __str__ está definido fora do escopo da classe Restaurante. Isso faz com que ele não seja reconhecido como o método de representação em string da instância da classe. Para corrigir isso, você deve garantir que o método __str__ esteja corretamente indentado dentro da classe Restaurante, seguindo os passos abaixo:

  • Selecione método __str__ e seu conteúdo
  • Pressione a tecla TAB uma vez
  • Agora o método __str__ estará fazendo parte do escopo da classe Restaurante
  • Salve o arquivo e execute-o novamente

Código completo com a correção aplicada

class Restaurante:
 
    def __init__(self, nome, categoria) -> None:
        self.nome = nome
        self.categoria = categoria
        self.ativo = False

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

restaurante_praca = Restaurante('Praça', 'Gourmet')
restaurante_pizza = Restaurante('Pizza Express', 'Italiano')
restaurante_japa = Restaurante('Japa Sushi', 'Japonesa')

restaurantes = [restaurante_praca, restaurante_pizza, restaurante_japa]

print(restaurante_praca)
print(restaurante_pizza)
print(restaurante_japa)

Resultado

Praça | Gourmet
Pizza Express | Italiano
Japa Sushi | Japonesa

Conte com o apoio do Fórum na sua jornada. Espero ter ajudado. Fico à disposição. Abraços e bons estudos!

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