Sobes.tech
Middle

Como são implementados os métodos de classe em Python?

sobes.tech IA

Resposta da IA

Em Python, os métodos de classe são implementados como funções definidas dentro da definição da classe. Eles tomam como primeiro argumento uma instância da classe (geralmente chamada de self), o que lhes permite aceder e modificar os atributos dessa instância. Existem também métodos de classe, relacionados com a própria classe (cls), e métodos estáticos, que não estão ligados nem à instância nem à classe.

class MyClass:
    def __init__(self, value):
        # Método de inicialização (construtor)
        self.value = value

    def instance_method(self):
        # Método de instância normal
        print(f"Valor da instância: {self.value}")

    @classmethod
    def class_method(cls, new_value):
        # Método de classe, aceita como primeiro argumento a própria classe
        print(f"Criando uma nova instância com método de classe")
        return cls(new_value * 2) # Pode usar cls para criar novas instâncias

    @staticmethod
    def static_method(x, y):
        # Método estático, não ligado nem à instância nem à classe
        print("Chamada de método estático")
        return x + y
Tipo de método Primeiro argumento Acesso aos atributos da instância Acesso aos atributos da classe Decorador
Método de instância self Sim Sim (através de self.__class__) Não
Método de classe cls Não (apenas através da instância) Sim @classmethod
Método estático Nenhum Não Não @staticmethod

A chamada dos métodos é feita assim:

obj = MyClass(10)

# Chamada do método de instância
obj.instance_method() # Saída: Valor da instância: 10

# Chamada do método de classe
new_obj = MyClass.class_method(5) # Saída: Criando uma nova instância com método de classe
print(new_obj.value) # Saída: 10

# Chamada do método estático
result = MyClass.static_method(2, 3) # Saída: Chamada de método estático
print(result) # Saída: 5