Почему метод не идентичен самому себе?

В документации Python об операторе is говорится:

Операторы is и is не тест для идентификатор объекта: x is y истинно, если и только если x и y являются одним и тем же объектом. x не y дает обратную истину значение.

Давайте попробуем это:

>>> def m():
...   pass
... 
>>> m is m
True

В документации Python также сказано :

Из-за автоматической сборки мусора, бесплатные списки и динамичный характер дескрипторы, вы можете заметить, как будто необычное поведение в определенных случаях использования оператор равен , как и те, которые включают сравнения между методами экземпляра, или константы. Проверьте их документация для получения дополнительной информации.

>>> class C:
...   def m():
...     pass
... 
>>> C.m is C.m
False

Я искал дополнительные объяснения, но не смог их найти.

Почему Cm is Cm ложно?

Я использую Python 2.x. Как отмечено в ответах ниже, в Python 3.x Cm is Cm верно.

13
задан Peter Mortensen 22 November 2014 в 14:57
поделиться