Re: [Python-es] Saber si un atributo es un descriptor
El lun., 14 dic. 2015 a las 22:24, Kiko () 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/
Re: [Python-es] __import__( ) cuando el "package" incluye un punto .
El vie., 11 dic. 2015 a las 17:46, Jose Caballero () escribió: > acabo de comprobar que tampoco se puede hacer un import normal > > from 1.2 import foo > > Mmmm. Tal vez tenga que cambiar los paths a algo como > > //package/api/v1_0/foo.py > //package/api/v1_1/foo.py > //package/api/v1_2/foo.py > > Lo que no entiendo qué problema hay para no usar imp.load_source() if cond12: foo = imp.load_source("foo", "//package/api/v1_2/foo.py") elif conf11: foo = imp.load_source("foo", "//package/api/v1_1/foo.py") else: foo = imp.load_source("foo", "//package/api/v1_0/foo.py") > > > El día 11 de diciembre de 2015, 11:42, Sergio Fernández > escribió: > > Jamás se debe usar módulos con puntos! > > > > La convención viene de PEP8: > > https://www.python.org/dev/peps/pep-0008/#package-and-module-names > > > > La razón es que en Python 2.4 se introduj el PEP328 con soporte para > > los imports locales: https://www.python.org/dev/peps/pep-0328/ > > > > Y por tanto utilizar punto entra en conflicto con esa caracteristica. > > > > > > 2015-12-11 17:36 GMT+01:00 Jose Caballero : > >> Hola, > >> > >> > >> necesito hacer import de una serie de modulos, pero solo se sabe el > >> path exacto en "run time". > >> Trabajo con "legacy code" que hace el import de estos modulos con > __import__( ) > >> > >> Pero ahora los paths incluyen en punto, de esta forma > >> > >> /./package/api/1.0/foo.py > >> /./package/api/1.1/foo.py > >> /./package/api/1.2/foo.py > >> > >> Y al pasar "api.1.2.foo" como primer argumento a __import__( ), se hace > un lio. > >> > >> Alguien tiene algun link donde explique como solventar esta silucion > >> con __import__( ) ? > >> NOTE: me interesa __import__( ), no imp( ), ni importlib, etc. > >> > >> > >> Gracias por adelantado. > >> Un saludo, > >> Jose > >> ___ > >> Python-es mailing list > >> Python-es@python.org > >> https://mail.python.org/mailman/listinfo/python-es > >> FAQ: http://python-es-faq.wikidot.com/ > > > > > > > > -- > > Sergio Fernández > > http://www.wikier.org > > ___ > > Python-es mailing list > > Python-es@python.org > > https://mail.python.org/mailman/listinfo/python-es > > FAQ: http://python-es-faq.wikidot.com/ > ___ > 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/
[Python-es] Saber si un atributo es un descriptor
Hola. Necesito identificar si un atributo de una clase es un descriptor. Por ejemplo, para conocer los descriptores del built-in type *int* usaría lo siguiente: *import types* *a = 1for attr in dir(a):if isinstance(getattr(type(a), attr), types.GetSetDescriptorType):print(attr)* Y el resultado sería: *denominatorimagnumeratorreal* Que creo son los únicos descriptores de *int.* ¿Es esto correcto? ¿Un descriptor puede ser otra cosa que no sea *types.GetSetDescryptorType*? *Gracias.* *Saludos.* ___ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] Saber si un atributo es un descriptor
El 14 de diciembre de 2015, 22:10, Kikoescribió: > Hola. > > Necesito identificar si un atributo de una clase es un descriptor. > > Por ejemplo, para conocer los descriptores del built-in type *int* usaría > lo siguiente: > > *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*... :-( > Que creo son los únicos descriptores de > > *int.* > ¿Es esto correcto? > Pues parece que no. > ¿Un descriptor puede ser otra cosa que no sea *types.GetSetDescryptorType* > ? > > ¿Alguna ayuda para poder detectar descriptores? > > > *Gracias.* > De nuevo. > > *Saludos.* > ___ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] Saber si un atributo es un descriptor
> *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 + 2jfor 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? Gracias. ___ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/