Sobes.tech
Junior
179

Como são implementados os métodos estáticos em Python?

Resposta da IA

sobes.tech IA

O método estático não está ligado a uma instância da classe nem à própria classe. Ele comporta-se como uma função normal, mas encontra-se no espaço de nomes da classe.

Implementa-se usando o decorador @staticmethod.

class MyClass:
    def __init__(self, value):
        self.value = value

    def instance_method(self):
        # O método de instância tem acesso a self
        print(f"Método de instância: {self.value}")

    @classmethod
    def class_method(cls):
        # O método de classe tem acesso à classe através de cls
        print(f"Método de classe: {cls.__name__}")

    @staticmethod
    def static_method(x, y):
        # O método estático não recebe argumento implícito (self ou cls)
        print(f"Método estático: {x + y}")

# Chamada ao método estático
MyClass.static_method(5, 10)

# Também pode ser chamado através de uma instância, mas não é recomendado
obj = MyClass(20)
obj.static_method(1, 2)

Principais características:

  • Não aceita o primeiro argumento implícito (self ou cls).
  • Não tem acesso aos atributos da instância ou da classe.
  • Está no espaço de nomes da classe para agrupamento lógico.
  • Pode ser chamado tanto através da classe quanto através de uma instância (embora a chamada via classe seja preferível).

O objetivo principal é funções auxiliares relacionadas à classe, mas que não dependem do estado de uma instância específica ou da própria classe (por exemplo, funções de ajuda, validadores, geradores que logicamente pertencem à classe).