¿Por qué un método no es idéntico a sí mismo?
losDocumentación de Python sobre elis
operador dice:
Los operadoresis
yis not
prueba de identidad de objeto:x is y
es cierto si y solo six
yy
Son el mismo objeto.x is not y
produce el valor de verdad inverso.
Probemos eso:
>>> def m():
... pass
...
>>> m is m
True
losLa documentación de Python también dice:
Debido a la recolección automática de basura, las listas gratuitas y la naturaleza dinámica de los descriptores, puede notar un comportamiento aparentemente inusual en ciertos usos deis
operador, como los que implican comparaciones entre métodos de instancia o constantes. Consulte su documentación para más información.
>>> class C:
... def m():
... pass
...
>>> C.m is C.m
False
Busqué más explicaciones, pero no pude encontrar ninguna.
Por que esC.m is C.m
¿falso?
Estoy usando Python 2.x. Como se señala en las respuestas a continuación, en Python 3.xC.m is C.m
es verdad.