2010-01-11 24 views

Respuesta

13

Sí, siempre y cuando también defina __eq__ (y presumiblemente __ne__! -) consistentemente con eso. IOW, está bien, mientras estés bien con a==b significa exactamente lo mismo que a is b! -)

+1

Gracias. Su segunda oración lo aclara bastante bien. –

6

Para la mayoría de las clases de Python, este es el comportamiento predeterminado. Los inhábiles son inigualables por una buena razón: son colecciones mutables.

Para las colecciones es práctico tener la relación de igualdad (según lo definido por __eq__()) basado en la igualdad de sus contenidos. Esto, y el requisito de que __hash__() se consista con igualdad, haría, por supuesto, que el __hash__() mutable, lo que sería horrible para las colecciones que contienen dichos objetos.

Así que puede hacer esto pero le cuesta la relación de igualdad basada en el contenido.

Cuestiones relacionadas