1
resposta

Mão na massa - criando classes, construtores e métodos

# Desafios
# 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:

    def __init__(self, nome='', saldo=float):
        self.titular = nome.title()
        self.saldo = saldo
        self._ativo = False 



# 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'Titular: {self.titular.ljust(15)} Saldo: R$ {self.saldo}'

conta1 = ContaBancaria("Ricardo Dutra", 5000)
conta2 = ContaBancaria("Fatima", 1500)

print(conta1)
print(conta2)

# 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 ativar_conta(cls,conta):
        conta._ativo = True

conta3 = ContaBancaria('Maria', 3000)
print (f'Antes de ativar: Ativa? - {conta3._ativo}')
ContaBancaria.ativar_conta(conta3)
print (f'Depois de ativar: Ativa? - {conta3._ativo}')


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

class ContaBancariaPythonica:
    def __init__(self, titular, saldo):
        self._titular = titular
        self._saldo = saldo
        self._ativo = False

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

    @property
    def saldo(self):
        return self._saldo

    @property
    def ativo(self):
        return self._ativo


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

conta4 = ContaBancariaPythonica("Luiz", 15000)
print(f"Titular da conta 4: {conta4.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:
    def __init__(self, titular, idade, cpf, ano_filiacao, saldo):
        self.titular = titular
        self.idade = idade
        self.cpf = cpf
        self.ano_filiacao = ano_filiacao
        self.saldo =saldo

titular1 = ClienteBanco('Ricardo', 53, '123.456.789-00' 1998, 15000 )
titular2 = ClienteBanco('Marcos', 45, '456.123.789-00' 2005, 5000 )
titular3 = ClienteBanco('Luiz', 34 , '789.123.456-00' 2020, 76000 )

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

class ClienteBanco:

    @classmethod
    def criar_conta(cls, titular, saldo_inicial):
        conta = ContaBancariaPythonica(titular, saldo_inicial)
        return conta

# Exemplo de uso do método de classe
conta_cliente1 = ClienteBanco.criar_conta("Mariana", 12000)
print(f"Conta de {conta_cliente1.titular} criada com saldo inicial de R${conta_cliente1.saldo}")


1 resposta

Oi, Ricardo!

Seu código tá bem completo e mostra que você entendeu a ideia de criar classes, construtores, métodos especiais, propriedades e até métodos de classe, parabéns!

  • Você aplicou bem o método especial __str__ para personalizar a saída ao imprimir objetos.
  • Usou corretamente atributos protegidos (_ativo) e propriedades na versão “pythônica” da classe.
  • Implementou método de classe (@classmethod) para ativar a conta e também para criar novas contas a partir de ClienteBanco.
  • Boa organização do código em blocos lógicos por desafio.

Você está no caminho certo! Continue firme nos estudos.

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