1
resposta

[Projeto] Hora da prática: criando classes, construtores e métodos

import os
os.system('cls')

# 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.

# 4 - Refatore a classe ContaBancaria para utilizar a abordagem "pythonica" na criação de atributos. Utilize propriedades, se necessário.

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

class ContaBancaria():
    def __init__(self, titular, saldo):
        self._titular = titular
        self.saldo = saldo
        self._ativo = False
    def __str__(self):
        status = 'Ativo' if self._ativo else 'Inativa'
        return f'{self.titular.ljust(10)} | R$ {self.saldo:<10.2f} | {status}.\n\n'
    def ativa_conta(self):
        self._ativo = True

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

    
cliente1 = ContaBancaria('Peter', 100)
cliente2 = ContaBancaria('Tony', 5000)

cliente2.ativa_conta()

print(f'{cliente1}{cliente2}')

print(cliente1.titular)

# 6 - Crie uma classe chamada ClienteBanco com um construtor que aceita 5 atributos. Instancie 3 objetos desta classe e atribua valores aos seus atributos através do método construtor.

# 7 - Crie um método de classe para a conta ClienteBanco.

class ClienteBanco(): 
    def __init__(self, titular, cpf, saldo, email, idade):
        self.titular = titular
        self.cpf = cpf
        self.saldo = saldo
        self.email = email
        self.idade = idade
    
    @classmethod
    def ativar_conta(cls, cliente):
        cliente._ativo = True
        print(f'Conta do cliente {cliente.nome} foi ativada com sucesso!')

    def __str__(self):
        status = "Ativa" if self._ativo else "Inativa"
        return f'Nome: {self.nome} | Idade: {self.idade} | Saldo: R$ {self.saldo:.2f} | Status: {status}'

cliente1 = ClienteBanco('Thor', 30, '123.456.789-00', 'thor@email.com', 1500.00)
cliente2 = ClienteBanco('Steve', 25, '987.654.321-00', 'steve@email.com', 2300.50)
cliente3 = ClienteBanco('Natasha', 40, '111.222.333-44', 'natasha@email.com', 5000.00)

1 resposta

Oi, Robson! Como vai?

Seu código está bem estruturado e você aplicou bem os conceitos de orientação a objetos com @property e métodos de classe. Gostei da forma como separou as funcionalidades nas classes ContaBancaria e ClienteBanco, com uso de __str__ para exibir os dados.

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