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 (
selfoucls). - 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).