Prezado Thiago Matos , Bom dia!
Minha dúvida está em como resolver em Python. Em Java, por exemplo, eu criaria annotations, algo do tipo @Situação(criada=0, aberta=1, bloqueada=2, ...) só como exemplo, não estou preocupado com a sintaxe correta do Java aqui. Mas com a anotação, seria possível ao desenvolvedor ver rápidamente o significado dos elementos da situação e com isso fazer sua programaçaõ de forma eficiente.
Em Python, que comecei a estudar agora, não tenho noção da melhor forma de passar ao programador os valores possíveis da situação da conta. Por exemplo, em uma regra de negócio, contas abertas podem receber depósito mas não saque. Ao receber o depósito (depósito inicial) a conta fica ativa e é possível sacar. Já contas bloqueadas não podem receber nem depósito (fraude, por exemplo, em compra de produtos com boletos para um suposto anunciante, mas na verdade é um fraudador que irá sacar os depósitos e sumir com o dinheiro sem entregar os produtos vendidos).
Acredito que no decorrer do curso, as formas de criar / exibir os domínios aos programadores possam ser abordados, mas já que eu criei o domínio da situação da conta (status) eu gostaria dessa informação. Alguns outros domínios possíveis: situação do cliente (se inadimplente, o limite da conta deve ser zero, se bom pagador, pode ter o limite aumentado automaticamente), vínculos da conta ( conta isolada, conta de cliente com investimentos, conta de cliente com dívidas, conta de cliente empresário: a reciprocidade da empresa pode ser positiva ou negativa, etc), convêncios da conta (outro domínio, conta para pagamento de salários, conta para recebimento de tributos, etc). Quando a coisa é simples, basta ler o código e entender do que se trata, mas quando temos um sistema OO complexo, temos que conseguir rapidamente identificar os domínios para podermos aplicá-los às regras de negócio que temos que implantar na construção / evolução / manutenção do sistema.
Você poderia me ajudar?