Sobes.tech
Junior — Middle

Qual é a diferença entre usar um método estático e um método de classe em Python?

sobes.tech IA

Resposta da IA

Um método estático em Python é um método que não recebe automaticamente nem uma instância da classe (self) nem a própria classe (cls) como primeiro argumento. Ele é declarado com o decorador @staticmethod e comporta-se como uma função normal, mas logicamente pertence à classe.

Um método de classe é declarado com o decorador @classmethod e recebe a classe (cls) como primeiro argumento. Isso permite que o método trabalhe com a própria classe, por exemplo, criando novas instâncias ou modificando propriedades da classe.

Exemplo:

class MyClass:
    @staticmethod
    def static_method():
        print("Este é um método estático")

    @classmethod
    def class_method(cls):
        print(f"Este é um método de classe, chamado para {cls}")

MyClass.static_method()  # Vai imprimir: Este é um método estático
MyClass.class_method()   # Vai imprimir: Este é um método de classe, chamado para <class '__main__.MyClass'>

Portanto, use o método estático quando a função não depende do estado da classe ou de suas instâncias, e o método de classe quando precisar trabalhar com a própria classe.