[pyar] Llamadas dinamicas resueltas en tiempo de ejecucion

Ale peralta.alejandro en gmail.com
Jue Feb 17 15:26:47 ART 2011


El día 17 de febrero de 2011 15:03, Leonardo M. Rocha
<leo.m.rocha en gmail.com> escribió:
> On Thu, Feb 17, 2011 at 5:35 PM, Ale <peralta.alejandro en gmail.com> wrote:
>>> #para un plugin determinado obtengo la lista de elementos y las filtro
>>> de acuerdo a una lista de metodos que se utilizan
>>> processMethod = [i for i in inspect.getmembers(plugin) if i[0] in
>>> processMethodCheck]
>>>
>>> Lo anterior solo parece funcionar lindo para obtener los metodos de un objeto
>>
>> Me parece que no es solamente para los métodos
>>
>> In [15]: class A(object):
>>   ....:     def __init__(self):
>>   ....:         self.a = 42
>>
>> In [16]:
>>
>> In [17]: inspect.getmembers(A())
>> Out[17]:
>> [('__class__', <class '__main__.A'>),
>>  ('__delattr__', <method-wrapper '__delattr__' of A object at 0x92d2dac>),
>>  ('__dict__', {'a': 42}),
>>  ...
>>  ('__subclasshook__',
>>  <built-in method __subclasshook__ of type object at 0x9329d34>),
>>  ('__weakref__', None),
>>  ('a', 42)]                                    <--- Fijate que ahí
>> está el atributo a
>>
>>
>> Ahí listo un atributo que se agrega al objeto en el momento de inicialización...
>
> Tenes razon,
>
> Solo para aprender un poco mas:
>
> Se me ocurre que sigue siendo un poco mas rapido acceder al objeto del
> diccionario (O(1) (en general) a O(n) en el peor caso
>
> que primero armar una lista a partir del diccionario (supongo O(n) )
> y despues recorrer la lista (u ordenarla) en busqueda del elemento
> cero de la tupla (donde parece ser O(n) )tambien
>

El único problema que veo es que si no usas new-style classes eso no
creo ande, fijate que si definis

In [1]: class A:         # no hereda de object
   ...:     def __init__(self):
   ...:         self.a = 42
   ...:
   ...:

In [3]: import inspect

In [4]: inspect.getmembers(A())
Out[4]:
[('__doc__', None),
 ('__init__', <bound method A.__init__ of <__main__.A instance at 0x9edce0c>>),
 ('__module__', '__main__'),
 ('a', 42)]


Entonces no tenes __dict__ Igual, si el código es propio y te
aseguraste de no usar "old-style classes"... capaz anda.




> Estoy en lo correcto ahi??
>
>
>>
>> Saludos,
>> --
>> Ale.
>> _______________________________________________
>> 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/
>>
>
>
>
> --
> Ing. Leonardo Manuel Rocha
> Ingénieur Expert
> INRIA Sophia Antipolis
> Projet PULSAR
> +33(0)49238 5007
> leonardo.rocha en inria.fr
> _______________________________________________
> 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/
>



-- 
Ale.



More information about the pyar mailing list