1
resposta

[Projeto] resolução das atividades

class Conta_bancaria:
    
    def __init__(self,titular,saldo):
        self._titular=titular
        self._saldo=saldo
        self._status=False
        
    

        
    @property
    def titular(self):
        return self._titular

    @property
    def saldo(self):
        return self._saldo

    @property
    def status(self):
        return self._status
    
    def ativar_conta(self):
        self._status = True

conta1=Conta_bancaria('Claudio','R$150' )
conta2=Conta_bancaria('Kaiser','R$10000')
conta3=Conta_bancaria('Lorenzo','R$200')


print(f'Titular da conta1: {conta1.titular}')
print(f'Titular da Conta2: {conta2.titular}')
print(f'Titular da conta3: {conta3.titular}')


class ClienteBanco:
    clientes=[]
    def __init__(self,titular,email,telefone,idade,profissao):
        self.titular=titular
        self.email=email
        self.telefone=telefone
        self.idade=idade
        self.profissao=profissao
        ClienteBanco.clientes.append(self)

    

    @classmethod
    def listar_clientes(cls):
        print(f'{'Nome do titular'.ljust(15)} | {'Email'.ljust(15)} | {'telefone'.ljust(15)}|{'idade'.ljust(15)}|{'profissão'.ljust(15)}')
        for cliente in cls.clientes:
            print(f'{cliente.titular.ljust(15)} | {cliente.email.ljust(15)} | {cliente.telefone.ljust(15)}|{cliente.idade.ljust(15)}|{cliente.profissao}')



cliente1=ClienteBanco('Elder','elder@gmail.com','9999999','16','Estadiario de super mercado')
cliente2=ClienteBanco('Valdir','valdir@gmail.com','9999999','19','Atendende de super mercado')

ClienteBanco.listar_clientes()
1 resposta

Olá, Cauã! Como vai?

Do jeito que você explicou e mostrou na implementação, chamou atenção o uso correto de @property para proteger atributos e a aplicação de @classmethod para manter a lista de clientes centralizada na classe, o que mostra um bom entendimento de encapsulamento e responsabilidade da classe.

Uma dica interessante para o futuro é usar um setter com @property para validar valores antes de alterar o atributo, evitando estados inválidos no objeto. Veja este exemplo:


class Conta:
    def __init__(self, saldo):
        self._saldo = saldo

    @property
    def saldo(self):
        return self._saldo

    @saldo.setter
    def saldo(self, valor):
        if valor >= 0:
            self._saldo = valor

Esse código garante que o saldo nunca receba um valor negativo, mantendo a consistência do objeto.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!