MaincontactProjects/ProyectosPapers/textos
Support Christine Media Player![]() ChristineFeedBurnerCategories
TirasPoll
Recent Comments
|
Tuesday 24 July 2007 11:35am
Categories
generalSoftware_Development personal Python FLOSS Supon que tienes una clase Uno y quieres que obtenga las propiedades de la clase Dos o Tres, Por que harias esto?, simplemente porque en tu programa no quieres lidiar con
import uno,dos,tres if "uno": refrerencia = uno() elif "dos": referencia = dos() else: referencia = tres() Y despues averiguar sobre quien haces la instancia en cada parte de tu codigo que requiera una instancia, de hecho, no es escalable, agregar una referencia mas seria doloroso si tu codigo es grande. mejor es hacer un empapelado de las referencias y hacer instancia a una sola, y que esta se haga pelotas de a quien referenciar. Una forma de acercarse seria usar esto:
class wrapper: def __init__(self,modulo): moduloobj = __import__("paquete",globals(),locals(),[modulo]) referencia = vars(moduloobj)[modulo] self.__empapelado = referencia() Para obtener refrencias de las propiedades de un objeto usamos getattr, getattr recibe como primer parametro el objeto en el que se buscará la propiedad y como segundo, el nombre de la propiedad en cadena.
def Query(self,metodo,*args): ''' @param string metodo: Nombre del metodo en cadena @param *args: argumentos a pasar al metodo. ''' met = getattr(self.__empapelado,metodo) if callable(met): return met(*args) #ejecutamos el metodo y regresamos lo que nos regrese Y tener:
a = wrapper("uno") #o "dos", o "tres"
a.Query("imprimeEsto","Texto a imprimir") Esto, desde mi punto de vista es ideal, pues tu codigo es limpio, pero tal vez quieres hacer el empapelado sobre un proyecto que ya tiene rato jalando, y que todo se hace referencia a una clase, pero, quieres que esta clase ahora sea el "empapelado". Puedes Piratearle las propiedades a otro objeto, asi:
#!/usr/bin/env python
import paquete class Pirata:
a = test.Pirata("modulo","clase")
a.imprimeEsto("Texto a Imprimir") De esta forma, no cambias nada en tu codigo que ya tienes, simplemente, en alguna parte de tu codigo, indicas que el "empapelado" ha de piratearle las propiedades a otro objeto que haga las operaciones necesarias.
Trackback URI: http://www.islascruz.org/html/index.php?Blog/Trackback/id/433
Re: "Piratearle" las propiedades a un objeto en Python
pcero, <> / Tuesday 24 July 2007 1:42pm
tal como lo sospeche desde un principio.
[ Reply (0) ]
Leave a Comment
Online Visitors:8
Today Visitors:79
Total Visitors:533627
Technorati
|