Crear clases dinamicamente

javier lasheras javier.lasheras en telefonica.net
Mar Ene 2 19:12:13 CET 2007


Muchos sistemas de plantillas generan un codigo python que compilan para 
hacer el trabajo. Ejemplo  tonto:

----
Esto es una plantilla
#if extendido
    Y sirve para que ${persona} conozca un ejemplo
#end
Ya.
----
Se compilaria a:
----
class __plantilla(Template):
    def __init__(self, context):
       self.context = context;
    def process(self, data):
       yield "Esto es una plantilla"
       if self.__getValue(data, "extendido"):
          yield "Y sirve para que "
          yield self.__getValue(data, "persona")
          yield "conozca un ejemplo"
       yield "Ya"
----

Si hicieras una interpretacion de la plantilla, deberias tener un arbol 
binario con los elementos procesados. Ejemplo: Data para el texto, Var 
para las variables, IF para los condicionales; donde IF puede contener a 
su vez a otras tipos Data, Var e IF. Generar codigo es igual de complejo 
que la interpretación y mucho más rapido en ejecución.

Con esto se suele obtener velocidad frente a la alternativa de 
"interpretar" las plantillas cada vez que se ejecutan.

Hay otros ejemplos de casos utiles. Pero basicamente piensa en lo 
siguiente: "Para que hacer un interprete, si ya tengo a python".

CVA escribió:
> Hola a todos. Al ver el "Subject" del mail, me surgio la duda: Cual es la utilidad o en que casos seria necesario o beneficioso crear una nueva clase en tiempo de ejecución?
>
> Saludos y gracias!
>
> Seba. 
>
>
>
>
>
> *********** "..Sólo sé que no se nada.." **************
>  __________________________________________________
> Correo Yahoo!
> Espacio para todos tus mensajes, antivirus y antispam ¡gratis! 
> ¡Abrí tu cuenta ya! - http://correo.yahoo.com.ar
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es
>   




Más información sobre la lista de distribución Python-es