Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] criando classes, construtores e métodos

1 - Crie uma classe chamada ContaBancaria com um construtor que aceita os parâmetros titular e saldo. Inicie o atributo ativo como False por padrão.

2 - Na classe ContaBancaria, adicione um método especial str que retorna uma mensagem formatada com o titular e o saldo da conta. Crie duas instâncias da classe e imprima essas instâncias.

3 - Adicione um método de classe chamado ativar_conta à classe ContaBancaria que define o atributo ativo como True. Crie uma instância da classe, chame o método de classe e imprima o valor de ativo.

Tentei deixar com a formatação padronizada com ljust, mas sempre dava erro então deixei sem isso pra seguir com o desafio e fazer as outras propostas, mas se alguém puder me ajudar nesse ponto, agradeço.

import os

class Conta_bancaria:
    lista_de_correntistas = []
    
    def __init__(self, titular, saldo, status=False):
        self._titular = titular.title()
        self._saldo = saldo
        self._status = status
        Conta_bancaria.lista_de_correntistas.append(self)

    def __str__(self):
        return f'{self._titular} | {self._saldo}'
    
    @classmethod
    def exibir_correntistas(cls):
        os.system('cls')

        print(f'{'Titular'.ljust(25)} | {'Saldo'.ljust(25)} | {'Status'}')

        for correntista in cls.lista_de_correntistas:
            print(f'{correntista._titular} | {correntista._saldo} | {correntista._status}')

    @property
    def ativo(self):
        return '☑' if self._ativo else '☐'
    
    def alternar_status(self):
        self._status = not self._status

correntista_ana = Conta_bancaria('Ana' , 5000)
correntista_maria = Conta_bancaria('Maria', 7200)
correntista_maria.alternar_status()

Conta_bancaria.exibir_correntistas()

5 - Crie uma instância da classe e imprima o valor da propriedade titular.

correntista_paula = Conta_bancaria("Paula", 10000)
print(f"Titular da conta 4: {correntista_paula.titular}")
2 respostas
solução!

Olá Felipe, tudo bem com você?

O método ljust é exclusivo para objetos do tipo string em Python, assim, para fazer o seu uso devemos converter os valores dos atributos da classe para o tipo string quando formos imprimi-los. Basta usarmos a função str() como apresentada abaixo:

str(correntista._saldo).ljust(25)

Essa conversão deve ser feita para os atributos _saldo e _status, por eles serem respectivamente do tipo int e bool. Seu código deve ficar da seguinte forma para que seja impresso corretamente as informações:

for correntista in cls.lista_de_correntistas:
    print(f'{correntista._titular.ljust(25)} | {str(correntista._saldo).ljust(25)} | {str(correntista._status).ljust(25)}')

Resultado

Imagem apresentando uma tabela no console, após executar o código acima

Após realizar as modificações acima, salve o arquivo e execute-o novamente.

Espero ter ajudado. Conte com o apoio do Fórum na sua jornada. Fico à disposição. Abraços e bons estudos!

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

Ahhh, rapaz... faz sentido. Obrigado, Rafael!