Sobes.tech
Junior — Middle

Explique as diferenças entre self e cls no contexto dos métodos de classe

sobes.tech IA

Resposta da IA

Em Python, self e cls são convenções para o primeiro parâmetro dos métodos, mas eles têm propósitos diferentes:

  • self é uma referência a uma instância específica da classe. É usado em métodos de instância normais para acessar atributos e métodos desse objeto.
  • cls é uma referência à própria classe, não à sua instância. É usado em métodos de classe (marcados com o decorador @classmethod) para trabalhar com a classe como um todo, por exemplo, criar novas instâncias ou modificar propriedades da classe.

Exemplo:

class MyClass:
    class_var = 0

    def __init__(self, value):
        self.instance_var = value

    def instance_method(self):
        print(f'Variável de instância: {self.instance_var}')

    @classmethod
    def class_method(cls):
        print(f'Variável de classe: {cls.class_var}')

obj = MyClass(10)
obj.instance_method()  # chama método de instância
MyClass.class_method()  # chama método de classe