Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Exercício 3 - ativar_conta

Olá a todos! Estou tendo um problema no exercício 3. Se alguém puder me ajudar, por gentileza, fico muito agradecido! Eu não estava conseguindo fazer por si só, então olhei o método "ContaBancaria.ativar_conta(conta3)", e o prompt me trouxe um erro do tipo: 'AttributeError: type object 'ContaBancaria' has no attribute 'ativar_conta'''

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

conta3 = ContaBancaria('João', 200)

print(f'Conta de {conta3.titular} antes de ativar era de {conta3._ativo}')

ContaBancaria.ativar_conta(conta3)

print(f'Conta de {conta3.titular} depois de ativar {conta3._ativo}')
2 respostas
solução!

Olá, Fernando.

Tudo bem?

Parece que você está fazendo um ótimo trabalho com a prática de Python e orientação a objetos. Vamos juntos resolver essa questão.

O problema que você está enfrentando é que o método ativar_conta não está definido na classe ContaBancaria. No código que você compartilhou, você definiu o método ativar_conta fora da classe ContaBancaria, por isso Python está reclamando que não pode encontrar o método ativar_conta na classe ContaBancaria.

Aqui está um exemplo de como você pode definir o método ativar_conta dentro da classe ContaBancaria:

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

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

conta3 = ContaBancaria('João', 200)

print(f'Conta de {conta3.titular} antes de ativar era de {conta3._ativo}')

ContaBancaria.ativar_conta(conta3)

print(f'Conta de {conta3.titular} depois de ativar {conta3._ativo}')

Neste exemplo, a classe ContaBancaria tem um construtor que aceita os parâmetros titular e saldo, e define o atributo _ativo como False. O método ativar_conta é um método de classe que altera o atributo _ativo da conta para True.

Espero ter ajudado e bons estudos!

Fala, Renan. Tudo ótimo e você?

Muito obrigado por sua ajuda e também pelo elogio! Suas explicações foram pontuais para eu conseguir entender. Mas na verdade, está sendo bem difícil para mim, não estou conseguindo acompanhar muito bem a lógica de programação. De toda forma, vou tentar me empenhar mais. Mais uma vez, obrigado. Tudo de melhor!