[pyar] Duda con isinstance

Pablo Hernan Rodriguez Zivic elsonidoq en gmail.com
Mie Jun 16 19:07:46 ART 2010


Hystrix wrote:
> 2010/6/16 Pablo Hernan Rodriguez Zivic <elsonidoq en gmail.com>:
>   
>> No puedo, porque ambos imports refieren al mismo archivo fisico, o importo
>> uno o importo el otro. Lo que me esta pasando en particular, es que tengo
>> una clase que la paso de una parte un programa a otra, y en la otra parte
>> hago un isinstance y me falla porque hago el import distinto... no se si te
>> entendi
>>     
>
> Se me ocurren dos cosas, o al hacer el import distinto estas
> importando efectivamente dos modulos distintos sin darte cuenta (por
> ejemplo uno de site-packages y otro que esta en el path desde donde
> ejecutas el script) o Python toma como que las clases son distintas si
> se importaron de forma distinta. Es lo que se me ocurre sin saber
> mucho del tema.
> Lo que te decia era que en tu ejemplo pruebes hacer el e=Test()
> despues de cada import en lugar de hacerlo solo al principio; entiendo
> que no puedas hacerlo en el codigo real pero si en el ejemplo funciona
> te puede ayudar a encontrar la causa del problema.
>
>
>   

Yo en el codigo medio que lo resolvi usando 
instancia.__class__.__name__  hasta que vea como hacerlo bien jajaja

Mira, hice esto:

In [1]: from test import Test as Test1

In [2]: from labs.test import Test as Test2

In [3]: e1= Test1()

In [4]: e2= Test2()

In [5]: isinstance(e1, Test1)
Out[5]: True

In [6]: isinstance(e1, Test2)
Out[6]: False

In [7]: isinstance(e2, Test1)
Out[7]: False

In [8]: isinstance(e2, Test2)
Out[8]: True

In [11]: inspect.getmodule(Test1).__file__
Out[11]: 'test.pyc'

In [12]: inspect.getmodule(Test2).__file__
Out[12]: '/home/pablo/repo/labs/trunk/labs/test.pyc'

In [13]: pwd
Out[13]: '/home/pablo/repo/labs/trunk/labs'


O sea, que efectivamente es el mismo archivo, y las clases Test1 y Test2 
son distintas... que raro... creo que hay algo que no entiendo




More information about the pyar mailing list