Aparentemente não há erro, porém o terminal não está executando o comando. As pastas estão nos locais certos
Aparentemente não há erro, porém o terminal não está executando o comando. As pastas estão nos locais certos
Olá amigo.
Preciso do seu código completo para que possa analisar.
Aguardo...
Olá amigo.
Após analisar seu código com base nas imagens fornecidas:
Aparentemente o problema está no arquivo app.py
.
Você criou a função main()
, mas não está chamando ela em nenhum lugar.
Ou seja, o Python executa o arquivo, define a função, mas como não há chamada, nada acontece no terminal.
No final do seu app.py
, adicione:
if __name__ == "__main__":
main()
Ficaria assim:
# segundo criamos o módulo de importação
from modelos.restaurante import Restaurante
restaurante_praca = Restaurante('Praça', 'Gourmet')
restaurante_mexicano = Restaurante('Mexican Food', 'Mexicana')
restaurante_japones = Restaurante('Japa', 'Japonesa')
restaurante_mexicano.alternar_estado()
# primeiro criamos o código principal
def main():
Restaurante.listar_restaurantes()
if __name__ == "__main__":
main()
Quando você roda python app.py
, o Python executa o arquivo.
if
, ele apenas carrega as funções e classes.main()
é realmente chamado e vai executar o método listar_restaurantes()
.Olá amigo,
Obrigado,
A função até estava, porém o main estava aom aspas simples:
if name == 'main':
main()
Agora esta executando, minha questão agora está nos símbolos, por não estão carregando.
class Restaurante:
restaurantes = []
# nome da classe por convenção sempre com a primeira letra maiuscula
def __init__(self, nome, categoria): #o self é a referência
self._nome = nome.title() #vai .alterar o nome para a primeira letra do nome para maiuscula
self._categoria = categoria.upper() #vai alterar todas as .letras para maiúscula
self._ativo = False #A boa prática é todos os atributos com underline ( nome, categoria, ativo)
Restaurante.restaurantes.append(self)
def __str__(self):
return f'{self._nome} | {self._categoria}'
@classmethod #por convenção usamos o class method para trazer todos os atributos dessa classe
def listar_restaurantes(cls):
print(f'{'Nome do restaurante'.ljust(25)} |{'categoria'.ljust(25)} | {'Status'}')
for restaurante in cls.restaurantes:
print(f'{restaurante._nome.ljust(25)} | {restaurante._categoria.ljust(25)} | {restaurante._ativo}')
@property #decorator serve para mostrar algum atributo de forma diferente, nesse caso estamos decorando o ativo
def ativo(self):
return '☒' if self._ativo else '☐'
def alternar_estado(self):
self._ativo = not self._ativo
Aqui amigo mais uma vez...
Vamos tentar resolver o problema.
O método ativo
, que retorna o símbolo "☒" ou "☐", nunca é chamado, e pode haver erros de estrutura.
Vamos corrigir e reestruturar a classe completa.
Aqui está a versão correta da classe Restaurante
:
class Restaurante:
restaurantes = []
def __init__(self, nome, categoria):
self._nome = nome.title()
self._categoria = categoria.upper()
self._ativo = False
Restaurante.restaurantes.append(self)
def __str__(self):
return f'{self._nome} | {self._categoria}'
@classmethod
def listar_restaurantes(cls):
print(f'{"Nome do restaurante".ljust(25)} | {"Categoria".ljust(25)} | Status')
for restaurante in cls.restaurantes:
print(f'{restaurante._nome.ljust(25)} | {restaurante._categoria.ljust(25)} | {restaurante.ativo}')
@property
def ativo(self):
return '☒' if self._ativo else '☐'
def alternar_estado(self):
self._ativo = not self._ativo
listar_restaurantes
:print(f'{'Nome...
)`, as aspas estavam mal formatadas. Corrigi para que o cabeçalho apareça corretamente.listar_restaurantes
, você usava restaurante._ativo
diretamente:True
ou False
. Para mostrar os símbolos "☒"/"☐", você deve acessar a property ativo
, ou seja, restaurante.ativo
.main.py
):from restaurante import Restaurante # se a classe estiver em outro arquivo chamado restaurante.py
rest1 = Restaurante('pizzaria da mama', 'italiana')
rest2 = Restaurante('Sushi House', 'japonesa')
rest2.alternar_estado() # ativa o restaurante
Restaurante.listar_restaurantes()
Nome do restaurante | Categoria | Status
Pizzaria Da Mama | ITALIANA | ☐
Sushi House | JAPONESA | ☒
Reforço que para uma analise correta preciso do código completo.
Todos os arquivos .py que compõe seu app.
Mas testa com estas mudanças e me envia o resultado.
Bons estudos.
E se tiver mais alguma duvida não deixe de perguntar.
Obrigado.