Menu
Coddy logo textTech

Decorador de métodos de clase

Parte de la sección Object Oriented Programming del Journey de Python de Coddy — lección 12 de 64.

El decorador @classmethod crea métodos que reciben la clase misma como el primer parámetro (cls) en lugar de una instancia (self).

Aquí hay un ejemplo de una clase con métodos de clase:

class Student:
    school_name = "Python Academy"
    student_count = 0
    
    def __init__(self, name):
        self.name = name
        Student.student_count += 1
    
    @classmethod
    def get_school_info(cls):
        return f"School: {cls.school_name}, Students: {cls.student_count}"
    
    @classmethod
    def create_guest_student(cls):
        return cls("Guest")

Llama a los métodos de clase utilizando el nombre de la clase:

info = Student.get_school_info()
print(info)

Crea algunos estudiantes:

alice = Student("Alice")
bob = Student("Bob")

updated_info = Student.get_school_info()
print(updated_info)

Usa métodos de clase como constructores alternativos:

guest = Student.create_guest_student()
print(guest.name)
print(Student.get_school_info())

Salida:

School: Python Academy, Students: 0
School: Python Academy, Students: 2
Guest
School: Python Academy, Students: 3

Los métodos de clase también se pueden llamar desde las instancias:

alice = Student("Alice")
info_from_instance = alice.get_school_info()
print(info_from_instance)

Salida:

School: Python Academy, Students: 1

Punto clave: Utiliza @classmethod cuando necesites acceder a los atributos de la clase o crear formas alternativas de construir objetos. El primer parámetro es cls (la clase en sí), no self.

Hoja de referencia

El decorador @classmethod crea métodos que reciben la clase misma como el primer parámetro (cls) en lugar de una instancia (self).

class Student:
    school_name = "Python Academy"
    student_count = 0
    
    def __init__(self, name):
        self.name = name
        Student.student_count += 1
    
    @classmethod
    def get_school_info(cls):
        return f"School: {cls.school_name}, Students: {cls.student_count}"
    
    @classmethod
    def create_guest_student(cls):
        return cls("Guest")

Llama a los métodos de clase utilizando el nombre de la clase:

info = Student.get_school_info()
guest = Student.create_guest_student()

Los métodos de clase también se pueden llamar desde las instancias:

alice = Student("Alice")
info_from_instance = alice.get_school_info()

Utiliza @classmethod cuando necesites acceder a atributos de clase o crear formas alternativas de construir objetos.

Pruébalo tú mismo

Esta lección no incluye un desafío de código.

quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Object Oriented Programming