Métodos Especiales

@staticmethod, @classmethod y el parámetro cls.

@classmethod y cls

Los métodos de clase reciben la clase como primer argumento (cls) en lugar de la instancia. Son útiles para crear "fábricas" de objetos.

class Pizza:
    def __init__(self, ingredientes):
        self.ingredientes = ingredientes

    @classmethod
    def napolitana(cls):
        return cls(['tomate', 'mozzarella'])

pizza_1 = Pizza.napolitana()

@staticmethod

No reciben ni la instancia (self) ni la clase (cls). Se comportan como funciones normales pero viven dentro del espacio de nombres de la clase.

class Calculadora:
    @staticmethod
    def sumar(a, b):
        return a + b

print(Calculadora.sumar(5, 3))