Clases dinámicas en Python

26 views
Skip to first unread message

Gregorio Bolivar

unread,
Feb 19, 2014, 4:56:21 PM2/19/14
to python-v...@googlegroups.com
Compañero buenas tardes le dejo este enlace bien interesante [1]


[1] http://codesurfers.wordpress.com/2011/09/14/clases-dinamicas-con-python/

--
ING. Prog. WebMaster Gregorio Bolívar, de Caracas - Distrito Capital
- Telf.: 0412-5596029
- IRC = gbolivar
- Twitter = @gbolivarb
- skype = elalconxvii
- Linux User ID: #537592
- Blog = http://gbbolivar.wordpress.com/
Laborando: Fabrica Nacional del Cemento - Apoyo Institucional en MPPI
Certificado de Aprobación: IBM ACE Professional Certificate


Wil Alvarez

unread,
Feb 19, 2014, 6:52:53 PM2/19/14
to python-v...@googlegroups.com
Como explicación breve, todo eso es posible gracias a que Python maneja funciones de primera clase, es decir, funciones que pueden asignarse como valor de una variable, esto es:

>>> aClass = B

Sin embargo, al asignar la función a una variable no se ejecuta, simplemente se para una "referencia". Para ejecutar llamamos a la función con los paréntesis y los posibles parámetros que necesite (como estamos acostumbrados a hacerlo). Eso nos devolverá el resultado de la ejecución de la función:

>>> newObject = aClass()
"New Object of Class B"

El segundo caso es similar pero con un paso extra, el eval. Con el eval hacemos que Python interprete el string y lo transforme en una referencia a la función. De ahí en adelante es similar al primer caso.

Saludos


--
Este es un mensaje del foro Python de Venezuela - http://www.python.org.ve
Para suscripciones y retiros: http://goo.gl/ug9by
---
Has recibido este mensaje porque estás suscrito al grupo "Python Venezuela" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a python-venezue...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.



--
Wil A. Alvarez
Linux Counter #415026
Debian Counter #259

Juancarlo Añez

unread,
Feb 19, 2014, 8:45:44 PM2/19/14
to python-venezuela
Will,

Esta cosa de Python en el cual los identificadores son alias temporales de los objetos es interesantísima, y muy poderosa.

Recuerda que puedes escribir:

>>> B = type('B', (object,), {})

>>> b =B()

>>> type(b)
__main__.B

En el upgrade que estoy pensando hacerle a Grako[1], las clases de objetos serían generadas automáticamente (on-the-fly, como dicen), para reducir el número de líneas de código que hay que escribir para producir un traductor (parece que me toca uno de VB6 a C#).

Saludos,

Juancarlo Añez
tel:+58(414)901-2021
skype:juancarloanez

Gregorio Bolivar

unread,
Feb 20, 2014, 6:32:49 AM2/20/14
to python-v...@googlegroups.com
Buenos dias hermano de la comunidad, en relacion al tema me ha hecho muy útil estoy armando una estructura de trabajo para servicios REST basado en bottler y bueno con toda estas cosas he avanzado, deseo hacer algo bien elaborado y no como expresa la documentación que la mayoria de las cosas tienen que estar en un solo archivo, eso no es mantenible en el tiempo.

Kristian Koci

unread,
Feb 20, 2014, 11:00:40 AM2/20/14
to python-v...@googlegroups.com
+1 Gregorio
Kristian Koci
Cel. 0416 202 92 94

Wil Alvarez

unread,
Feb 20, 2014, 11:32:41 AM2/20/14
to python-v...@googlegroups.com
El 20 de febrero de 2014, 2:45, Juancarlo Añez<juancar...@gmail.com> escribió:
Will,

Esta cosa de Python en el cual los identificadores son alias temporales de los objetos es interesantísima, y muy poderosa.

Recuerda que puedes escribir:

>>> B = type('B', (object,), {})

>>> b =B()

>>> type(b)
__main__.B

En el upgrade que estoy pensando hacerle a Grako[1], las clases de objetos serían generadas automáticamente (on-the-fly, como dicen), para reducir el número de líneas de código que hay que escribir para producir un traductor (parece que me toca uno de VB6 a C#).

Saludos,


Juancarlos,

Eso de alias temporales no lo sabía y sí, está interesantísimo para metaprogramming. Voy a leer un poco al respecto.

Gracias por el dato ;)

Camilo Torres

unread,
Feb 20, 2014, 6:03:32 PM2/20/14
to python-v...@googlegroups.com
On Thursday, February 20, 2014 7:02:49 AM UTC-4:30, Gregorio Bolivar wrote:
Buenos dias hermano de la comunidad, en relacion al tema me ha hecho muy útil estoy armando una estructura de trabajo para servicios REST basado en bottler y bueno con toda estas cosas he avanzado, deseo hacer algo bien elaborado y no como expresa la documentación que la mayoria de las cosas tienen que estar en un solo archivo, eso no es mantenible en el tiempo.

On Thursday, February 20, 2014 7:02:49 AM UTC-4:30, Gregorio Bolivar wrote:
Buenos dias hermano de la comunidad, en relacion al tema me ha hecho muy útil estoy armando una estructura de trabajo para servicios REST basado en bottler y bueno con toda estas cosas he avanzado, deseo hacer algo bien elaborado y no como expresa la documentación que la mayoria de las cosas tienen que estar en un solo archivo, eso no es mantenible en el tiempo.

Hola Gregorio,

¿Piensas hacer un fork de Bottle? ¿Estás refiriéndote a este Bottle: bottlepy.org?
¿Dónde expresa la documentación que la mayoría de las cosas tienen que estar en un solo archivo? Si puedes, por favor provee el link.

He tenido que trabajar on un proyecto que tiene 8000+ líneas en un solo módulo (código, comentarios, documentación, espacios). Una aplicación más modular utilizaría más módulos que esta a la que me refiero (valga la redundancia, bien a propósito), y ya me toca ir modularizando un poco más. Personalmente recomiendo modularizar suficientemente las aplicaciones.

Bottle tiene 3500+ líneas de código, pero creo que es menos enredado que el código que tengo ahorita entre manos; es mi opinión personal que Bottle está todo en un solo módulo para mostrar que se puede hacer porque es un microframwork; no quiero polemizar con esto.

Camilo 

Gregorio Bolivar

unread,
Feb 20, 2014, 9:57:55 PM2/20/14
to python-v...@googlegroups.com
Es lo que he visto hasta ahora de los ejemplos, pero bueno yo estoy haciendo algo basado en lases dinamicas modular donde un main recibe los datos que sera expuesto en un servicio rest ese mismo procesa clases dinamicas que se incluyen modularmente esos modulos solo deven devolver un arraglo y el main principal lo devuelve en json al cliente:

-Usuario
|  - __init__.py
|  - main.py
-Empresa
|  - __init__.py
|  - main.py
-Cargos
|  - __init__.py
|  - main.py
-Componentes
|  - __init__.py
|  - main.py
-main.py

algo asi el main procesara todo basado en las clases dinamicas ya eso esta programado, si haces una peticion al localhost:8000/api/empresa, automaticamente se comunica con empresa y asi sucesivamente me queda es que pase otros parametros mas u se consultes los metodos y fines y todo lo devuelve en json, no soy experto en python acepto sugerencias


--
Este es un mensaje del foro Python de Venezuela - http://www.python.org.ve
Para suscripciones y retiros: http://goo.gl/ug9by
---
Has recibido este mensaje porque estás suscrito al grupo "Python Venezuela" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a python-venezue...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
Reply all
Reply to author
Forward
0 new messages