[pyar] Maybe Metaprogramming?

Angel Java Lopez ajlopez2000 en gmail.com
Jue Sep 17 22:13:27 ART 2015


Me queda la curiosidad...

Cual es el caso de uso para este requerimiento?

Nos leemos!

Angel "Java" Lopez
@ajlopez

2015-09-17 20:03 GMT-03:00 Emiliano Reynares <reynares.emiliano en gmail.com>:

> Gustavo,
>
> Las clases abstractas en Python realmente impiden la creación de
> instancias? O en realidad fuerzan a que ciertos métodos (los abstractos)
> sean implementados por las subclases "concretas"? Ah, me olvide de decir
> que estoy usando Python3
>
> Emiliano
>
> 2015-09-17 19:48 GMT-03:00 Emiliano Reynares <reynares.emiliano en gmail.com>
> :
>
>> 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
>>>
>>
>>
>
> _______________________________________________
> 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/e188e574/attachment-0001.html>


More information about the pyar mailing list