Python · Intermediário · Inglês · Técnico
classmethod e staticmethod
Decorators que mudam o primeiro argumento do método. O classmethod recebe a própria classe (cls); o staticmethod não recebe nada e funciona como função solta dentro da classe.
Onde usar
Classmethod é o jeito idiomático de criar construtores alternativos, como from_json. Staticmethod aparece em funções utilitárias, e muitos revisores preferem movê-las para fora da classe.
Em código
class Util:
@classmethod
def nome(cls):
return cls.__name__
@staticmethod
def dobro(n):
return n * 2Exemplos
Use a classmethod as an alternative constructor.
Use um classmethod como construtor alternativo.
This staticmethod doesn't touch the class at all.
Esse staticmethod não toca na classe.
Cuidado
Não use staticmethod para tudo; uma função de módulo costuma ser mais simples quando não depende da classe.