@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))