jueves, 17 de enero de 2019
miércoles, 16 de enero de 2019
martes, 15 de enero de 2019
lunes, 14 de enero de 2019
Receta Python 3 No. 8-17: Crear una Instancia sin Invocar el Método __init__
1. Problema
Crear un objeto de una clase sin hacer uso del método __init__().
2. Solución
A través de la invocación del método __new__() es posible crear un objeto sin invocar el método __init__(). A la hora de crear una instancia se se invoca el método __new__() con el nombre de la clase (Beazly, Jones, 2013).
3. Código Python 3
4. Literatura & Enlaces
Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.
O
Etiquetas:
Capítulo 8,
Programación,
Programming,
Python,
Python 3,
Receta
martes, 8 de enero de 2019
Receta Python 3 No. 8-16: Definir Más de un Constructor en una Clase
1. Problema
Se requiere escribir una clase que tenga más de un constructor.
2. Solución
Para definir una clase con más de un constructor es necesario definir uno o más métodos de clase (Beazly, Jones, 2013).
3. Código Python 3
4. Literatura & Enlaces
Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.
O
Etiquetas:
Capítulo 8,
Programación,
Programming,
Python,
Python 3,
Receta
Ubicación:
Pitalito, Huila, Colombia
lunes, 7 de enero de 2019
Receta Python 3 No. 8-15: Delegar el Acceso a un Atributo
1. Problema
Delegar el acceso a un atributo de una clase sobre otra.
2. Solución
Por medio del método __getattr__() es posible obtener todos los atributos de instancia definidos en una clase padre sobre la implementación de una sublase (Beazly, Jones, 2013).
3. Código Python 3
4. Literatura & Enlaces
Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.
O
Etiquetas:
Capítulo 8,
Programación,
Programming,
Python,
Python 3,
Receta
Ubicación:
Pitalito, Huila, Colombia
Receta Python 3 No. 8-14: Implementar Contenedores Personalizados
1. Problema
Escribir una clase que actúe de forma análoga a una estructura contenedora (i.e., lista o diccionario).
2. Solución
A través de la librería collections provee un conjunto de clases abstractas para la definición de estructuras contenedoras (Beazly, Jones, 2013).
3. Código Python 3
Archivo Python contenedor_personalizado.py [enlace alternativo]:
Prueba de ejecución:
[2, 3, 5]
2
5
[-2, 2, 3, 5]
[2, 3, 5]
True
4
-2 2 3 5
Prueba de ejecución:
[2, 3, 5]
2
5
[-2, 2, 3, 5]
[2, 3, 5]
True
4
-2 2 3 5
4. Literatura & Enlaces
Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.
O
Etiquetas:
Capítulo 8,
Programación,
Programming,
Python,
Python 3,
Receta
Ubicación:
Pitalito, Huila, Colombia
Receta Python 3 No. 8-13: Implementar un Modelo de Datos o un Sistema de Tipos
1. Problema
Definir un modelo de datos para crear restricciones sobre los tipos de datos y los valores que se pueden asignar sobre ellos.
2. Solución
La solución a este problema consiste en hacer validaciones sobre la creación y asignación de atributos al momento de definir la estructura de datos (Beazly, Jones, 2013). La validación se debe realizar por cada atributo.
3. Código Python 3
Archivo Python modelo_datos.py [enlace alternativo]:
Prueba de ejecución:
Bluetooth Griffin
...
Process finished with exit code 1
Prueba de ejecución:
Bluetooth Griffin
...
Process finished with exit code 1
4. Literatura & Enlaces
Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.
O
Etiquetas:
Capítulo 8,
Programación,
Programming,
Python,
Python 3,
Receta
Ubicación:
Pitalito, Huila, Colombia
domingo, 6 de enero de 2019
Receta Python 3 No. 8-12: Definir una Interfaz o una Clase Abstracta
1. Problema
Se require crear una clase abstracta para la definición de métodos comunes en una jerarquía de herencia.
2. Solución
El módulo abc provee artefactos para la creación y definición de clases abstractas (Beazly, Jones, 2013).
3. Código Python 3
Archivo Python clase_abstracta.py [enlace alternativa]:
TypeError: Can't instantiate abstract class IStream with abstract methods escribir, leer
Prueba de ejecución:
TypeError: Can't instantiate abstract class IStream with abstract methods escribir, leer
4. Literatura & Enlaces
Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.
O
Etiquetas:
Capítulo 8,
Programación,
Programming,
Python,
Python 3,
Receta
Ubicación:
Pitalito, Huila, Colombia
Receta Python 3 No. 8-11: Simplificar la Inicialización de Estructuras de Datos
1. Problema
Remover código repetido cuando se definen clases que sirven como estructuras de datos.
2. Solución
Definir una superclase que sirva como estructura básica que cargue dinámica los atributos de las subclases (Beazly, Jones, 2013).
3. Código Python 3
Archivo Python inicializacion_estructura.py [enlace alternativo]:
Prueba de ejecución:
...
TypeError: Se esperan 3 argumentos
Prueba de ejecución:
...
TypeError: Se esperan 3 argumentos
4. Literatura & Enlaces
Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.
O
Etiquetas:
Capítulo 8,
Programación,
Programming,
Python,
Python 3,
Receta
Ubicación:
Pitalito, Huila, Colombia
Receta Python 3 No. 8-10: Usar Propiedades Calculadas de Carga Tardía
1. Problema
Definir propiedades de carga tardía que una vez accedidas el valor se compute.
2. Solución
Por medio de una clase de tipo descriptor es posible definir propiedades computadas de forma tardía.
3. Código Python
Archivo Python propiedad_calculo_tardio.py [enlace alternativo]:
Prueba de ejecución:
3.0
Computando el área...
28.274333882308138
28.274333882308138
Computando el perímetro...
18.84955592153876
18.84955592153876
Prueba de ejecución:
3.0
Computando el área...
28.274333882308138
28.274333882308138
Computando el perímetro...
18.84955592153876
18.84955592153876
Nótese en la salida que las cadenas Computando el área... y Computando el perímetro... sólo se muestra una vez.
4. Literatura & Enlaces
Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.
O
Etiquetas:
Capítulo 8,
Programación,
Programming,
Python,
Python 3,
Receta
Ubicación:
Pitalito, Huila, Colombia
Suscribirse a:
Entradas (Atom)