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 ✓.