ExpertiDict

Python · Intermediário · Inglês · Técnico

classmethod e staticmethod

/ˈklæsˌmɛθəd i ˈstæɾɪkˌmɛθəd/substantivo

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 * 2

Exemplos

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.

Veja também

Todos os termos de Python