1
resposta

[Dúvida] Em aprendizado de: Python

class ContaBancaria: def init(self, titular, saldo): self.titular = titular self.saldo = saldo self._ativo = False

    def __str__(self):
        return f'Conta de {self.titular} - Saldo: R${self.saldo}'
    conta1 = ContaBancaria ('João', 1500)
    conta2 = ContaBancaria ('Maria', 500)

    print(conta1)
    print(conta2)

    def ativar._conta(cls, conta):
  conta._ativo = True

conta3 = ContaBancaria('Carlos', 200)
print(f'Antes de ativar: Conta ativa? {conta3._ativo}')

ContaBancaria.ativarconta(conta3) print(f'Depois de ativar: Conta ativa? {conta3.ativo}')

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
    
    conta4 = ContaBancariaPythonica('Anne', 2000)
    print(f'Titular da conta 4: {conta._4titular}')

    Class ClienteBanco: 
    def __init__ (self, nome, idade, endereco, cpf, profissao):
        self.nome = nome
        self. idade = idade
        self.endereco = endereco
        self.cpf = cpf
        self.profissao = profissao

        cliente1 = ClienteBanco ('Ana', 30, 'Rua A', '123.456.789-01', 'Autonoma')
        cliente2 = ClienteBanco ('Lais', 25, 'Rua B', '999.888.777-66', 'Estudante')
        cliente3 = ClienteBanco ('Laya' 20, 'Rua C', '666.777.888-00', 'Estudante')

        class ClienteBanco:

            @classmethod
            def criar_conta(cls, titular, saldo_inicial):
                conta = ContaBancariaPythonica(titular, saldo_inicial)
                return conta
            
            conta_cliente1 = ClienteBanco.criar_conta('Ana', 2500)
            print(f'Conta de {conta_cliente1.titular} criada com saldo inicial de R${conta_cliente1.saldo}')
            
            
            
            -
            Alguém me daria uma dica de como eu melhoro esse código e no que errei? No terminal ele acaba dando alguns erros mas eu to tentando compreender ainda o motivo. 
            Aceito dicas e explicações x.x
1 resposta

Vamos corrigir e melhorar o seu código. Vou explicar cada parte enquanto faço as correções.

Código Corrigido

class ContaBancaria:
    def __init__(self, titular, saldo):
        self.titular = titular
        self.saldo = saldo
        self._ativo = False

    def __str__(self):
        return f'Conta de {self.titular} - Saldo: R${self.saldo}'

    @classmethod
    def ativar_conta(cls, conta):
        conta._ativo = True

# Criação das contas
conta1 = ContaBancaria('João', 1500)
conta2 = ContaBancaria('Maria', 500)

print(conta1)
print(conta2)

# Teste de ativação de conta
conta3 = ContaBancaria('Carlos', 200)
print(f'Antes de ativar: Conta ativa? {conta3._ativo}')
ContaBancaria.ativar_conta(conta3)
print(f'Depois de ativar: Conta ativa? {conta3._ativo}')

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

# Criação de uma conta bancária pythonica
conta4 = ContaBancariaPythonica('Anne', 2000)
print(f'Titular da conta 4: {conta4.titular}')

class ClienteBanco:
    def __init__(self, nome, idade, endereco, cpf, profissao):
        self.nome = nome
        self.idade = idade
        self.endereco = endereco
        self.cpf = cpf
        self.profissao = profissao

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

# Criação de clientes
cliente1 = ClienteBanco('Ana', 30, 'Rua A', '123.456.789-01', 'Autônoma')
cliente2 = ClienteBanco('Lais', 25, 'Rua B', '999.888.777-66', 'Estudante')
cliente3 = ClienteBanco('Laya', 20, 'Rua C', '666.777.888-00', 'Estudante')

# Criação de conta para cliente
conta_cliente1 = ClienteBanco.criar_conta('Ana', 2500)
print(f'Conta de {conta_cliente1.titular} criada com saldo inicial de R${conta_cliente1.saldo}')

Explicação das Correções e Melhorias

  1. Indentação e Estrutura:

    • Garanti que a indentação estivesse correta em todas as linhas de código para evitar erros de sintaxe.
  2. Métodos __init__:

    • Corrigi a definição dos métodos __init__ com dois underscores (antes e depois da palavra init).
  3. Nomeação de Métodos:

    • Renomeei o método ativar._conta para ativar_conta e corrigi a chamada desse método.
  4. Criação e Ativação de Contas:

    • Adicionei a criação e impressão das contas conta1 e conta2.
    • Corrigi a ativação da conta3 usando o método de classe ativar_conta.
  5. Propriedades da Classe Pythonica:

    • Adicionei propriedades @property na classe ContaBancariaPythonica para acessar titular, saldo e ativo.
  6. Classe ClienteBanco:

    • Corrigi a sintaxe e criei corretamente os objetos cliente1, cliente2 e cliente3.
    • Adicionei o método criar_conta como um método de classe com o decorador @classmethod.