isinstance

Chema Cortés py en ch3m4.org
Mar Dic 21 13:29:09 CET 2004


El Martes, 21 de Diciembre de 2004 12:36, Catalin Lungu escribió:
> Hola,
> Me podrían decir cual es la diferencia entre:
>
> d={}
>
> if type(d) == dict:
>     return "diccionario"

Lo primero, la igualdad == es "igualdad de valores" que no es equivalente a 
"igualdad de identidades" en objetos. Para comprobar si dos objetos son 
iguales hay que usar el operador 'is':

if type(d) is dict:
  return "diccionario"

"a is b" es lo mismo que "id(a)==id(b)"


Si no lo entiendes te lo explico con un ejemplo:

class P(int):pass

a=P(10)
b=P(10)

a==b  # True
a is b # False

> y
>
> if isinstance(d, dict):
>     return "diccionario"
>

'dict' puede usarse para derivar nuevos tipos. Con 'type(d) is dict' 
compruebas que sea del tipo 'dict' exclusivamente, siendo falso si fuera de 
un tipo derivado:

class D(dict):pass

d=D()

type(d) is dict # False
isinstance(d,dict) # True
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: no disponible
Type: application/pgp-signature
Size: 189 bytes
Desc: no disponible
URL: <http://mail.python.org/pipermail/python-es/attachments/20041221/a5ed1e09/attachment.pgp>
------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es


Más información sobre la lista de distribución Python-es