Logo de fravelz

Notas de Hacking

Fravelz

Decorador @classmethod

@classmethod permite crear funciones que pueden acceder o modificar el estado de la clase, sin necesidad de crear un objeto.


Ejemplo {#ejemplo}

class Persona:
poblacion = 0  # Atributo de clase

def __init__(self, nombre):
self.nombre = nombre
Persona.poblacion += 1

@classmethod
def cuantos_hay(cls):
return f"Hay (cls.poblacion) personas registradas."

# Podemos llamar al método sin crear objetos:
print(Persona.cuantos_hay())  # Hay 0 personas registradas.

# Crear algunos objetos:
p1 = Persona("Ana")
p2 = Persona("Luis")

# Llamar de nuevo:
print(Persona.cuantos_hay())  # Hay 2 personas registradas.

Diferencias entre tipos de métodos {#diferencias-entre-tipos-de-métodos}


En resumen {#en-resumen}

  • @staticmethod: método independiente, solo usa los parámetros que se le pasen.
  • @classmethod: método ligado a la clase, puede usar o modificar atributos de la clase y se puede llamar sin crear una instancia.