Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Criação de verificador de ativação do restaurante

Boa tarde pessoal, dentro das atividades relacionadas à validação do restaurante proposta no curso de Orientação a Objetos (OO) criei esta função para validação do restaurante. Esta forma de implementação está adequada para um bom projeto? Desconsiderando a refatoração básica (remoção dos trechos repetidos), a qual sei que é possível, de que outra maneira eu poderia implementar também esta função?

def verificar_ativacao(restaurante):
    empresa = restaurante.nome
    if restaurante.ativo == False:
        print(f'O restaurante {empresa} está inativo, deseja ativar?')
        print('1 - Sim')
        print('2 - Não')
        ativar = int(input('Digite sua opção: '))
        if ativar == 1:
            restaurante.ativo = True
            print(f'O restaurante {empresa} foi ativado com sucesso!')
    else:
        print(f'O restaurante {empresa} está ativo. Deseja desativar?')
        print('1 - Sim')
        print('2 - Não')
        desativar = int(input('Digite sua opção: '))
        if desativar == 1:
            restaurante.ativo = False
            print(f'O restaurante {empresa} foi desativado com sucesso!')
1 resposta
solução!

Olá, Jenivaldo!

Considerando a ressalva que você fez sobre a refatoração, esta me parece uma boa implementação.

Apenas fico em dúvidas sobre usar o mesmo termo (Sim) para confirmar a alteração do status True/False em cada caso. Semanticamente, está correto, ficando a cargo do usuário estar bem atento à pergunta para responder corretamente.

Veja se a alternativa como a seguir te dá alguma ideia, pois acho estranho uma construção de frase que alguém diz "Sim" para negar alguma coisa (ou, neste caso, torná-la "False"):

[...]
    if restaurante.ativo == False:
        print(f'O restaurante {empresa} está inativo. Deseja ativar?')
        print('1 - Ativar')
        print('2 - Sair')
        acao = int(input('Digite sua opção: '))
        if acao == 1:
            restaurante.ativo = True
            print(f'O restaurante {empresa} foi ativado com sucesso!')
    else:
        print(f'O restaurante {empresa} está ativo. Deseja desativar?')
        print('1 - Desativar')
        print('2 - Sair')
        if acao == 1:
            restaurante.ativo = False
            print(f'O restaurante {empresa} foi desativado com sucesso!')
[...]

Também senti falta de um redirecionamento para a tela seguinte após a escolha do usuário para ele não ficar preso a esta tela depois de ler o resultado da operação dele ao escolher a opção 1.

Na sugestão, o vlr "2 - Sair" só se aplica na tela com a mensagem com o status do restaurante.

Continue assim! ;o)