[pyar] Maybe Metaprogramming?

Emiliano Reynares reynares.emiliano en gmail.com
Jue Sep 17 19:48:56 ART 2015


Gracias por las respuestas, me han clarificado varias cosas.
Sin embargo, tengo que aclarar que el bindeo de métodos necesito hacerlo
sobre las intancias, no sobre las clases. Siguiendo el ejemplo anterior,
algunos individuos de la clase A tienen bindeados métodos implementados por
la clase B; pero otros individuos podrían tener bindeados métodos
implementados en una clase C.
Desde el punto de vista OOP, ya se que es extraño lo que intento hacer, el
tema es que estoy intentando implementar un paradigma completamente
distinto con los elementos actualmente disponibles en Python.

Saludos!

Emiliano

2015-09-17 13:42 GMT-03:00 Joaquin Duo <joaduo en gmail.com>:

>
> 2015-09-17 12:35 GMT-03:00 Emiliano <reynares.emiliano en gmail.com>:
>
>> Lo he visto, solo que seguiria sin poder impedir que sea instanciada la
>> clase de la cual obtengo los métodos a bindear. O estoy equivocado?
>>
>
> Es difícil evitar que el programador haga lo que se de le de la gana. Pero
> si tu idea es evitar malas prácticas, entonces podría generar una excepción
> en __init__ "raise TypeError('no instanciable')
> Supongo que podrías hacer una clase padre para todas las clases no
> instanciables? (entonces heredan init)
>
>
>
>> Emiliano
>> ------------------------------
>> De: Daniel Moisset <dmoisset en machinalis.com>
>> Enviado el: ‎17/‎09/‎2015 12:25 p.m.
>> Para: Python Argentina <pyar en python.org.ar>
>> Asunto: Re: [pyar] Maybe Metaprogramming?
>>
>> Algo como
>> http://stackoverflow.com/questions/8544983/dynamically-mixin-a-base-class-to-an-instance-in-python
>> te sirve?
>>
>> 2015-09-17 12:15 GMT-03:00 Emiliano Reynares <reynares.emiliano en gmail.com
>> >:
>>
>>> 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
>>>
>>> _______________________________________________
>>> pyar mailing list pyar en python.org.ar
>>> http://listas.python.org.ar/listinfo/pyar
>>>
>>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>>
>>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>>> Argentina - http://www.usla.org.ar
>>>
>>
>>
>>
>> --
>> Daniel F. Moisset - Technical Leader
>> www.machinalis.com
>> Skype: @dmoisset
>>
>> _______________________________________________
>> pyar mailing list pyar en python.org.ar
>> http://listas.python.org.ar/listinfo/pyar
>>
>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>
>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>> Argentina - http://www.usla.org.ar
>>
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20150917/2e76ff36/attachment-0001.html>


More information about the pyar mailing list