Não tratei os possiveis erros de entrada do usuário para ser mais direto. Os @classmethod que definei fazem sentido, esses metodos devem ficar detro da class ou devem ficar fora? O que mais deveria ser melhorado ? Como seria o jeito "pythonyco" de fazer esse código ?
class ContaBancaria:
lista_contas = []
def __init__(self, titular, saldo):
self.titular = titular
self.saldo = saldo
self.ativo = False
ContaBancaria.lista_contas.append(self)
def __str__(self):
return f'{self.titular} | {self.saldo}'
@classmethod
def listar_contas(cls):
print(f'{'Nome titular'.ljust(25)} | {'Saldo em conta'.ljust(25)} | Status da Conta')
for conta in cls.lista_contas:
print(f'{conta.titular.ljust(25)} | {conta.saldo.ljust(25)} | {conta.ativo}')
input('Digite uma tecla para voltar ao menu principal')
menu()
@classmethod
def cadastrar_conta(cls):
nome = input('Digite o nome do titular: ')
saldo = input('Digite o valor do deposito: ')
cls(nome, saldo)
input('Digite uma tecla para voltar ao menu principal')
menu()
@classmethod
def ativar_conta(cls):
nome_procurado = input('Digite o nome do titular da conta')
for conta in cls.lista_contas:
if conta.titular == nome_procurado:
conta.ativo = not conta.ativo
print(f'Conta ativada' if conta.ativo else 'Conta Desativada')
input('Digite uma tecla para voltar ao menu principal')
menu()
def menu():
print('1.Cadastrar conta')
print('2.Listar contas')
print('3.Ativar conta')
print('4.Sair')
selecao = input('Digite uma opção: ')
opcoes(selecao)
def opcoes(selecao):
if selecao == '1':
ContaBancaria.cadastrar_conta()
elif selecao == '2':
ContaBancaria.listar_contas()
elif selecao == '3':
ContaBancaria.ativar_conta()
elif selecao == '4':
print('Saindo do programa')
def main():
menu()
if __name__ == '__main__':
main()