O projeto inteiro está aqui, na pasta accounts; os outros arquivos são exercícios que fiz para melhor entender classes e afins.
O projeto tem as classes Account, Client e Date, além de suas instancias (com accounts e clients em arquivos separados).
Em Account, separei métodos e funções em sua ordem lógica. As contas são jogadas em um dicionário e não numa lista, pq tanto faz onde estão. Isso ajuda depois na hora de buscar uma conta: vc digita Account.accounts[123].holder.full_name
e o nome aparece.
Ainda não ficou claro para mim a diferença de static, class e instance methods.
No main há vários exercícios onde tentei extrair informações. Vale a pena rodá-los depois.
Por fim, para ter um dicionário com todos os bancos e seus códigos e não ter que hard code nada, usei o GPT para usar uma API e construir um arquivo generate_banks.py
:
import requests
import json
response = requests.get("https://brasilapi.com.br/api/banks/v1")
data = response.json()
banks = {item['code']: item.get('fullName', 'Unknown') for item in data}
with open("accounts/bank_list.py", "w") as f:
f.write(f"banks = {json.dumps(banks, indent=4)}")
Assim, constrói-se um dicionário banks
num arquivo bank_list.py
que subsequentemente importa-se em main.py
e account.py
. Voce pode procurar por um banco com o método dele
print(f"Bank you want: {Account.bank_code('1')}", "\n")
print(f"{Account.accounts[222].holder.full_name}'s exotic, he has an account at {Account.bank_code('612')}, cuz that's how he rolls.")
e sua resposta será
Bank you want: Banco do Brasil S.A.
Kevin Lomax's exotic, he has an account at Banco Guanabara S.A., cuz that's how he rolls.