Por que um método não é idêntico a si mesmo?
oDocumentação do Python sobre ois
operador diz:
Os operadoresis
eis not
teste para identidade do objeto:x is y
é verdade se e somente sex
ey
são o mesmo objeto.x is not y
produz o valor inverso da verdade.
Vamos tentar isso:
>>> def m():
... pass
...
>>> m is m
True
oA documentação do Python também diz:
Devido à coleta automática de lixo, listas gratuitas e a natureza dinâmica dos descritores, você pode perceber um comportamento aparentemente incomum em certos usos dois
operador, como aqueles que envolvem comparações entre métodos de instância ou constantes. Verifique a documentação deles para mais informações.
>>> class C:
... def m():
... pass
...
>>> C.m is C.m
False
Procurei mais explicações, mas não consegui encontrar nenhuma.
Porque éC.m is C.m
falso?
Estou usando o Python 2.x. Conforme observado nas respostas abaixo, no Python 3.xC.m is C.m
é verdade.