Junior — Middle
Qual é a diferença entre classmethod e staticmethod em Python?
sobes.tech IA
Resposta da IA
classmethod e staticmethod são dois tipos de métodos em Python que diferem na forma como acedem à classe e aos seus dados.
-
@classmethod — método que recebe como primeiro argumento a própria classe (
cls), em vez de uma instância. Isto permite que o método trabalhe com a classe, altere o seu estado ou crie novas instâncias. -
@staticmethod — método que não recebe automaticamente nem uma instância (
self) nem uma classe (cls). É uma função normal que está logicamente relacionada com a classe, mas não depende do seu estado.
Exemplo:
class MyClass:
count = 0
def __init__(self):
MyClass.count += 1
@classmethod
def get_count(cls):
return cls.count
@staticmethod
def greet(name):
return f"Hello, {name}!"
obj = MyClass()
print(MyClass.get_count()) # Mostra o número de objetos criados
print(MyClass.greet('Alice')) # Mostra uma saudação
Resumo:
classmethodpode modificar ou usar o estado da classe.staticmethodé simplesmente uma função dentro da classe, que não depende da classe nem de uma instância.