1
resposta

Duvida: O que seria em forma 'Pythonica'?

class bank_account:
        def __init__(self, name, saldo):
            self._name = name
            self._saldo = saldo
            self._activate = False


        @property
        def activate(self):
            return 'Status da conta: ☑' if self._activate else 'Status da conta: ☐'
        def activate_account(self):
            self._activate = not self._activate


        def __str__(self):
            return (f'Nome do dono da conta: {self._name}, Saldo bancário: {self._saldo} {self.activate} ')

    Conta1 = bank_account('Guilherme Almeida', 'R$ 2500.0')
    Conta2 = bank_account('Gilmar Mendes', 'R$ 2500.0')
    Conta3 = bank_account('Fernanda Oliveira', 'R$ 3000.0')
    Conta4 = bank_account('Alessandra Rodrigues ', 'R$ 1000.0')
    Conta5 = bank_account('Gregorio Pereira', 'R$ 300.0')
    Conta6 = bank_account('Caio Castle', 'R$ 10000.0')

    Conta1.activate_account()
    Conta2.activate_account()
    Conta4.activate_account()
    Conta6.activate_account()
    print(Conta1)
    print(Conta2)
    print(Conta3)
    print(Conta4)
    print(Conta5)
    print(Conta6)
1 resposta

Olá Matheus! Tudo joia?

A programação "pythônica" refere-se a escrever código Python de uma forma que seja considerada idiomática e que siga as melhores práticas da linguagem. Isso geralmente significa escrever código que é claro, conciso e que aproveita as características únicas do Python, como o uso de propriedades, compreensão de listas, e outros recursos que tornam o código mais legível e eficiente.

No seu código, você já está utilizando algumas práticas pythonicas, como o uso de propriedades para acessar o status da conta de forma mais elegante. No entanto, podemos fazer algumas melhorias para torná-lo ainda mais pythonico:

  1. Nomeação de Classes e Métodos: Em Python, é comum usar o estilo PascalCase para nomes de classes e snake_case para métodos e variáveis. Assim, bank_account poderia ser renomeado para BankAccount, e activate_account poderia ser ativar_conta.

  2. Uso de Propriedades: Você já está usando propriedades, o que é ótimo! Isso permite que você acesse atributos de forma controlada, sem expor diretamente os atributos privados.

  3. Método __str__: O método __str__ está bem implementado, mas você pode garantir que o saldo seja sempre exibido como um número ao invés de uma string, assim você pode realizar operações matemáticas com ele, se necessário.

Aqui está uma versão um pouco mais pythonica do seu código:

class ContaBancaria:
    def __init__(self, titular, saldo):
        self._titular = titular
        self._saldo = float(saldo.replace('R$', '').replace(',', ''))
        self._ativo = False

    @property
    def ativo(self):
        return 'Status da conta: ☑' if self._ativo else 'Status da conta: ☐'

    def ativar_conta(self):
        self._ativo = not self._ativo

    def __str__(self):
        return (f'Nome do dono da conta: {self._titular}, Saldo bancário: R$ {self._saldo:.2f} {self.ativo}')

Conta1 = ContaBancaria('Guilherme Almeida', 'R$ 2500.0')
Conta2 = ContaBancaria('Gilmar Mendes', 'R$ 2500.0')
Conta3 = ContaBancaria('Fernanda Oliveira', 'R$ 3000.0')
Conta4 = ContaBancaria('Alessandra Rodrigues', 'R$ 1000.0')
Conta5 = ContaBancaria('Gregorio Pereira', 'R$ 300.0')
Conta6 = ContaBancaria('Caio Castle', 'R$ 10000.0')

Conta1.ativar_conta()
Conta2.ativar_conta()
Conta4.ativar_conta()
Conta6.ativar_conta()

print(Conta1)
print(Conta2)
print(Conta3)
print(Conta4)
print(Conta5)
print(Conta6)

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.