class ContaBancaria:
def __init__(self, titular, saldo):
self._titular = titular.title() # Abordagem protegida (_)
self._saldo = saldo
self._ativo = False
# 2. Método especial __str__
def __str__(self):
status = 'Ativa' if self._ativo else 'Inativa'
return f'Conta de {self._titular} | Saldo: R${self._saldo:.2f} | Status: {status}'
# 3. Método para ativar a conta
# Nota: Usei método de instância pois ativa UMA conta específica.
def ativar_conta(self):
self._ativo = True
# 4. Propriedades (Getters) - Abordagem Pythonica
@property
def titular(self):
return self._titular
@property
def saldo(self):
return self._saldo
@property
def ativo(self):
return self._ativo
# --- Testando os desafios 1 a 5 ---
# Instâncias
conta1 = ContaBancaria('guilherme', 1500.50)
conta2 = ContaBancaria('sarah', 3000.00)
# Imprimindo (usa o __str__)
print(conta1)
print(conta2)
# Ativando conta e verificando
conta1.ativar_conta()
print(f'A conta de {conta1.titular} está ativa? {conta1.ativo}')
# 5. Imprimindo apenas o titular via propriedade
print(f'Propriedade titular: {conta2.titular}')
class ClienteBanco:
def __init__(self, nome, idade, cpf, email, profissao):
self.nome = nome
self.idade = idade
self.cpf = cpf
self.email = email
self.profissao = profissao
# 7. Método de classe
@classmethod
def criar_cadastro_basico(cls, nome, cpf):
"""Cria um cliente apenas com nome e CPF, atributos essenciais."""
return cls(nome, 0, cpf, 'Não informado', 'Não informada')
def __str__(self):
return f'Cliente: {self.nome} | Profissão: {self.profissao}'
# 6. Instanciando 3 objetos
cliente1 = ClienteBanco('Ana Silva', 28, '123.456.789-00', 'ana@email.com', 'Dev')
cliente2 = ClienteBanco('Bruno Souza', 35, '987.654.321-11', 'bruno@email.com', 'Designer')
cliente3 = ClienteBanco('Carla Dias', 22, '456.123.789-22', 'carla@email.com', 'Gerente')
# Testando o método de classe
cliente_novo = ClienteBanco.criar_cadastro_basico('Marcos Viz', '111.222.333-44')
print(cliente1)
print(cliente_novo)