El lun., 14 dic. 2015 a las 22:24, Kiko (<kikocorre...@gmail.com>) escribió:

>
>
>> *import types*
>>>
>>>
>>>
>>>
>>>
>>> *a = 1for attr in dir(a):    if isinstance(getattr(type(a), attr),
>>> types.GetSetDescriptorType):        print(attr)*
>>> Y el resultado sería:
>>>
>>>
>>>
>>>
>>>
>>>
>>> *denominatorimagnumeratorreal*
>>>
>>
>> Vaya, acabo de cambiar *a* para que sea *complex* en lugar de *int* y mi
>> código de encima no me devuelve *img* y *real*, que son descriptores de
>> *complex*...
>>
>> :-(
>>
>
> Esto parece que sí funciona:
>
> *import types*
> *a = 1 + 2j*
>
>
>
> *for attr in dir(a):    if isinstance(getattr(type(a), attr), *
>
>
> *                      (types.GetSetDescriptorType,
> types.MemberDescriptorType)):        print(attr)*
> Lo anterior parece que sí funciona. No entiendo muy bien la diferencia
> entre GetSetDescriptor y MemberDescriptor.
> ¿Sería lo anterior lo adecuado para resolver el problema?
>

Oficialmente, un descriptor es todo objeto con, al menos, un método
"__get__":

hasattr(attr, "__get__")


>
> Gracias.
> _______________________________________________
> Python-es mailing list
> Python-es@python.org
> https://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
-- 
Hyperreals *R  "Quarks, bits y otras criaturas infinitesimales":
http://ch3m4.org/blog
_______________________________________________
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a