1
resposta

Dúvida Exercício

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

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}")

Por que o parâmetro (cls) é necessário nessa função? Testei sem e deu esse erro: TypeError: ContaBancaria.ativar_conta() takes 1 positional argument but 2 were given

Não entendi!

1 resposta

Olá Mauricio, tudo bem com você?

Sem o parâmetro cls, o método não espera receber argumentos adicionais, pois, quando se trata de um método de classe em Python, o primeiro parâmetro é implicitamente reservado para a própria classe - representado por cls. Esse parâmetro é passado automaticamente por baixo dos panos.

Quando chamamos o método de classe sem incluir o parâmetro cls em sua definição, o Python interpreta erroneamente que o método foi projetado para não receber argumentos adicionais, resultando em um conflito entre os argumentos passados e os esperados. Isso é o que causa o erro TypeError: ContaBancaria.ativar_conta() takes 1 positional argument but 2 were given.

Espero ter ajudado. Conte com o apoio do Fórum na sua jornada. Fico à disposição. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!