[pyar] Maybe Metaprogramming?

Emiliano Reynares reynares.emiliano en gmail.com
Jue Sep 17 12:15:49 ART 2015


Gente,

Tengo una consulta un poco extraña que hacerles pero espero me puedan
orientar. Lo que necesito es definir una estructura que me permita agrupar
e implementar un conjunto de métodos, los cuales serán "bindeados" a un
individuo que pertenece a una clase distinta, en tiempo de ejecución.
Por el momento lo que se me ha ocurrido es agrupar los métodos a ser
"bindeados" en una clase. Luego defino un método que permite bindearlos a
un instancia de una clase diferente. Algo así:

class A:
    def bind_methods(self, cls):
        pass

class B:
    def b1(self):
        pass

    def b2(self):
        pass

Luego, puedo hacer:

foo = A()
foo.bind_methods(B)

La implementación la omito para no hacer más largo el mail, pero tengo eso
funcionando. Sin embargo, dudo bastante que sea la manera más elegante de
implementar lo que estoy necesitando.
Primero, necesitaría que la clase en la cual agrupo los métodos a "bindear"
(clase B del ejemplo) no pueda ser instanciada. Aún cuando pudiera lograr
eso, el argumento "self" de los métodos definidos en ese contexto es muy
confuso (aunque luego funciona perfectamente al ser "bindeado" a la
instancia).
Alguna sugerencia/recurso que pueda consultar para conseguir una
implementación más elegante?
Espero haber sido claro,

Saludos!


-- 
Emiliano Reynares
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20150917/fbc56378/attachment.html>


More information about the pyar mailing list