Domina cómo aplicar los decoradores @staticmethod y @classmethod en Python para escribir clases claras y reutilizables. Verás cómo centralizar utilidades como validar ISBN y cómo crear constructores alternativos que generan instancias con reglas específicas, sin depender de objetos previos.
Métodos estáticos y de clase en Python: organiza utilidades y crea instancias de forma flexible.
¿Qué es un static method y cómo validar ISBN en Python?
Un método estático encapsula lógica que no usa estado de instancia. No recibe self. Es perfecto para utilidades y validaciones puras. Aquí, Biblioteca.validar_isbn comprueba que un ISBN tenga al menos diez caracteres con len y retorna True o False.
Se invoca desde la clase, sin instanciar. Se imprime el resultado para verificar la lógica.
# main.pyfrom biblioteca import Biblioteca
resultado = Biblioteca.validar_isbn("12345")print("El ISBN es válido:", resultado)# Falseresultado = Biblioteca.validar_isbn("1234567890")print("El ISBN es válido:", resultado)# True
Claves prácticas: usa el decorador @staticmethod, evita self, agrupa utilidades relacionadas en la clase Biblioteca, y llama como Biblioteca.validar_isbn(valor).
¿Cómo usar un class method como constructor alternativo en la clase libro?
Un método de clase opera a nivel de clase y recibe el parámetro cls. Permite crear constructores alternativos que devuelven nuevas instancias con configuraciones predefinidas. En Libro, crear_no_disponible construye un objeto con disponible=False sin tocar el constructor principal.
¿Cómo instanciar con el método de clase en main.py?
Se llama directamente desde la clase y se verifica el atributo disponible.
# main.pyfrom libro import Libro
libro_no_disp = Libro.crear_no_disponible( titulo="Libro de prueba", autor="Autor de prueba", isbn="1234567890",)print("Libro disponible:", libro_no_disp.disponible)# False
Puntos clave: decorador @classmethod, uso de cls para crear instancias, retorno del objeto y acceso a atributos como disponible.
¿Cuáles son las diferencias clave entre staticmethod y classmethod?
Comprender las diferencias ayuda a separar la lógica de clase de la lógica de instancias, mejorando organización y mantenimiento.
Ámbito: @staticmethod no usa self ni cls. @classmethod recibe cls.
Propósito: @staticmethod sirve para utilidades como validar ISBN con len. @classmethod crea instancias con reglas propias, como un constructor alternativo.
Invocación: ambos se llaman desde la clase. No requieren instancia previa.
Organización: centralizan validaciones y fábricas en sus clases (Biblioteca, Libro).
¿Te animas a aplicarlo? Crea un método de clase en Estudiante para generar un estudiante en una carrera específica y comparte tu código en los comentarios.
Decoradores @staticmethod y @classmethod en Python