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: 3Los 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: 1Punto 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.
Pruébalo tú mismo
Esta lección no incluye un desafío de código.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Object Oriented Programming
1Fundamentos de la POO
Archivos externosIntroducción a la POOClases vs ObjetosEl parámetro selfMétodosAtributosMétodo constructor (__init__)Resumen - Calculadora simple4Herencia
Herencia básicaLa función super()Sobrescritura de métodosHerencia múltipleOrden de resolución de métodosResumen - Jerarquía de empleados7Métodos especiales
Introducción a los métodos mágicosSobrecarga de operadoresMétodos mágicos de contenedoresRepaso - Lista personalizada10Patrones de diseño Parte 1
Introducción a los patrones de diseñoPatrón SingletonPatrón FactoryPatrón ObserverPatrón Strategy2Decoradores
Introducción a los decoradoresDecorador propertyDecorador de métodos estáticosDecorador de métodos de clase5Polimorfismo
Sobreescritura de métodos revisitadaDuck TypingClases y métodos abstractosDiseño de interfacesResumen - Calculadora de figuras8Conceptos avanzados de POO
Composición vs. HerenciaMixinsMétodos estáticos y de claseDecoradores de claseGestores de contexto11Patrones de diseño, parte 2
Patrón CommandPatrón AdapterPatrón DecoratorPatrón Template MethodPatrón StatePatrón Composite3Propiedades de clase
Variables de instancia vs de claseDecoradores de propiedadesAtributos privadosResumen - Gestor de cuentas bancarias