#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.
class ContaBancaria:
lista_de_contas_bancarias = [ ]
def __init__(self, titular: str, saldo: int, ativo: bool = False):
self._titular = titular
self._saldo = saldo
self._ativo = ativo
ContaBancaria.lista_de_contas_bancarias.append(self)
#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.
def __str__(self):
return f'{self._titular:<15} | {self._saldo:<15} | {self._ativo}'
#4.Refatore a classe ContaBancaria para utilizar a abordagem "pythonica" na criação de atributos. Utilize propriedades, se necessário.
@property
def titular(self):
return self._titular
@property
def saldo(self):
return self._saldo
@property
def ativo(self):
return self._ativo
#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.
@classmethod
def ativa(cls):
'''Muda estado da conta para oposto, ativado ou desativado, valor boleano'''
cls._ativo = True
cls.listar_contas_bancarias()
@staticmethod
def listar_contas_bancarias():
count=0
print(f'{'->':<6}{"Titular":<15} | {"saldo":<15} | {"ativo"}')
for conta_bancaria in ContaBancaria.lista_de_contas_bancarias:
print(f'{count:<5} {conta_bancaria}')
count+=1
#5.Crie uma instância da classe e imprima o valor da propriedade titular.
conta1 = ContaBancaria('Marcos', 3000) conta2 = ContaBancaria('Woody', 5000, True)
ContaBancaria.ativa()
#ContaBancaria.listar_contas_bancarias()
print(conta2.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.
class ClienteBanco:
lista_de_cliente_banco = [ ]
numero_de_contas = 0 # Atributo de classe, comum a todas as instâncias
def __init__(self, cliente: str, saldo: int, email: str, telefone: int, ativo: bool = False):
self._cliente = cliente
self._saldo = saldo
self._email = email
self._telefone = telefone
self._ativo = ativo
ClienteBanco.lista_de_cliente_banco.append(self)
ClienteBanco.numero_de_contas += 1 # Atualiza o atributo de classe
def __str__(self):
return f'{self.cliente:<8} | {self.saldo:<10} | {self.email:<20} | {self.telefone:<14} | {self.ativo}'
@property
def cliente(self):
return self._cliente
@property
def saldo(self):
return self._saldo
@property
def email(self):
return self._email
@property
def telefone(self):
return self._telefone
@property
def ativo(self):
return self._ativo
#7.Crie um método de classe para a conta ClienteBanco.
@classmethod
def listar_clientes_do_banco(cls):
print(f'{"->":<7}{"Cliente":<8} | {"Saldo":<10} | {"Email":<20} | {"Telefone":<14} | {"Ativo"}')
count=0
for cliente in cls.lista_de_cliente_banco:
print(f'{count:<6} {cliente}')
count+=1
@classmethod
def total_de_contas(cls):
return cls.numero_de_contas # Acessa o atributo de classe
cliente1 = ClienteBanco('Jose', 10000, 'jose@belem.com.br', 11999998888, 'True') cliente2 = ClienteBanco('Maria', 3000, 'maria@belem.com.br', 11999998888) cliente3 = ClienteBanco('Jesus', 0, 'jesus@belem.com.br', 11999998888)
ClienteBanco.listar_clientes_do_banco()
print(f'Total de contas: {ClienteBanco.total_de_contas()}')