Para não repetir cada pergunta, deixei dentro as marcações #[x], onde x representa o número do exercício e o código abaixo a resolução.
#[1]
class ContaBancaria:
def __init__(self, titular, saldo):
self.titular = titular
self.saldo = saldo
self._ativo = False
#[2]
def __str__(self):
return f'{self.titular:<20}{self.saldo:<13}{self.ativo}'
#[3]
@property
def ativo(self):
return 'Ativa'if self._ativo else 'Inativa'
def ativar_conta(self):
self._ativo = not self._ativo
conta1 = ContaBancaria('Pedro Zecarias', 15000)
conta2 = ContaBancaria('Samantha Gomes', 66500)
print(f'''{'TITULAR':<20}{'SALDO (R$)':<13}{'STATUS'}
{'-'*40}
{conta1}
{conta2}
''')
ContaBancaria.ativar_conta(conta1)
print(f'Ativação de Conta: {conta1}')
#[4]
class ContaBancariaPythonica:
def __init__(self, titular, saldo):
self._titular = titular
self._saldo = saldo
self._ativo = False
#[5]
nova_conta1 = ContaBancariaPythonica('João dos Anjos', 10000000)
print(f'\nNova modalidade de conta para: {nova_conta1._titular.upper()}')
#[6]
class ClienteBanco:
clientes = []
def __init__(self, nome, idade, profissao, titular,limite_credito):
self._nome = nome.title()
self._idade = idade
self._profissao = profissao.title()
self._titular = titular
self._limite_credito = limite_credito
ClienteBanco.clientes.append(self)
@property
def titular_status(self):
return 'Sim' if self._titular else 'Não'
#[7]
@classmethod
def listar_clientes(cls):
print(f'{'NOME':<15}{'IDADE':<10}{'PROFISSÃO':<20}{'TITULAR':<15}{'LIMITE DE CRÉDITO'}')
for cliente in cls.clientes:
print(f'{cliente._nome:<15}{cliente._idade:<10}{cliente._profissao:<20}{cliente.titular_status:<15}{cliente._limite_credito}')
cliente1 = ClienteBanco('bezerra',69, 'agricultor', True, 200000 )
cliente2 = ClienteBanco('Elêonor',50, 'designer de moda', True, 350000 )
cliente3 = ClienteBanco('enzo',15, 'estudante', False, 100 )
ClienteBanco.listar_clientes()