Olá Davidson! Tudo bem?
Na verdade, a escolha entre usar um método de classe (@classmethod
) ou um método de instância depende muito do contexto e da intenção de design da classe.
No seu caso, se o atributo _ativo
é um atributo protegido da instância, faz sentido pensar que a ativação da conta deveria ser um método de instância. Isso porque cada conta bancária individualmente pode ser ativada ou desativada, e essa ação não afeta outras instâncias da classe.
Aqui está um exemplo prático de como poderia ser implementado como um método de instância:
class ContaBancaria:
def __init__(self, numero, titular):
self.numero = numero
self.titular = titular
self._ativo = False
def ativar_conta(self):
self._ativo = True
# Criando uma instância da classe
conta = ContaBancaria("12345", "João")
# Chamando o método de instância para ativar a conta
conta.ativar_conta()
# Imprimindo o valor de ativo
print(conta._ativo) # Saída: True
No entanto, se o exercício está pedindo especificamente para usar um @classmethod
, pode ser que a intenção seja demonstrar o uso desse tipo de método, mesmo que não seja o caso mais comum para essa situação específica. Aqui está um exemplo de como poderia ser feito com um método de classe:
class ContaBancaria:
_ativo = False # Atributo de classe
def __init__(self, numero, titular):
self.numero = numero
self.titular = titular
@classmethod
def ativar_conta(cls):
cls._ativo = True
# Criando uma instância da classe
conta = ContaBancaria("12345", "João")
# Chamando o método de classe para ativar a conta
ContaBancaria.ativar_conta()
# Imprimindo o valor de ativo
print(ContaBancaria._ativo) # Saída: True
Neste segundo exemplo, o método ativar_conta
está atuando sobre o atributo de classe _ativo
, compartilhado por todas as instâncias da classe. Isso não seria ideal para ativar uma conta individual, mas pode ser útil em outros contextos onde você precisa modificar um estado compartilhado por todas as instâncias.
Espero ter ajudado e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.