[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