Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Quando usar método de classe e quando usar método de instância?

Olá, bom dia, tudo bem?

Estou com dúvidas sobre quando utilizar métodos de classe ou métodos de instância, pois não achei ser necessário chamar a classe para criar instâncias ou ativar contas, como é mostrado nos exercícios 3 e 7. Por que passar cls se vamos alterar a instância (cada conta, individualmente)?

Obrigada!

1 resposta
solução!

Bom dia, Danielle! Tudo bem?

Vou tentar esclarecer um pouco em qual momento você pode usar cada com um pouco de teoria e código.

Métodos de Instância: Esses métodos operam em instâncias específicas da classe. Eles acessam e modificam os dados que pertencem a uma instância particular. Por exemplo, se você tem uma classe ContaBancaria, um método de instância poderia ser algo como depositar, que altera o saldo de uma conta específica. Você usa o self para referenciar a instância atual.

Exemplo:

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

    def depositar(self, valor):
        self.saldo += valor

Métodos de Classe: Esses são usados quando você precisa fazer algo ao nível da classe, e não de uma instância específica. Eles são úteis para criar métodos que afetem a classe na totalidade ou que precisem de informações sobre a classe. Você passa cls como primeiro parâmetro, que é uma referência à classe, não há uma instância.

No seu exercício, o método ativar_conta é um método de classe. Isso pode ser usado, por exemplo, para definir um comportamento padrão para todas as instâncias ou para criar instâncias de uma forma específica.

Exemplo:

class ContaBancaria:
    ativo = False

    @classmethod
    def ativar_conta(cls):
        cls.ativo = True

No exercício 3, o método ativar_conta é um método de classe porque está alterando um atributo compartilhado por todas as instâncias (neste caso, ativo), ou pode ser que o método esteja configurando algo que é relevante para a classe como um todo.

Espero ter ajudado e bons estudos!

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