2
respostas

07 Hora da prática: criando classes, construtores e métodos

#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()}')

2 respostas

Boa tarde Marcos!

Boa, é isso ai!