ункция @ `id` в Python 2.7, оператор` is`, идентификатор объекта и пользовательские методы [duplicate]

На этот вопрос уже есть ответ:

id () объектов привязанного и несвязанного метода - иногда одинаковые для разных объектов, иногда разные для одного и того же объекта 2 ответа

Результаты из кода ниже в Python 2.7 показались мне противоречием.isператор @ должен работать с идентификатором объекта, как иid. Но их результаты расходятся, когда я смотрю на определенный пользователем метод. Почему это

py-mach >>class Hello(object):
...  def hello():
...    pass
...
py-mach >>Hello.hello is Hello.hello
False
py-mach >>id(Hello.hello) - id(Hello.hello)
0

Я нашел следующую выдержку из описания Модель данных Python несколько полезно. Но это не совсем прояснило. Почемуid функция возвращает одно и то же целое число, если объекты метода, определенные пользователем, создаются каждый раз заново?

Пользовательские объекты метода могут быть созданы при получении атрибута класса (возможно, через экземпляр этого класса), если этот атрибут является объектом пользовательской функции, несвязанным объектом пользовательского метода или объектом метода класса , Когда атрибут является определяемым пользователем объектом метода, новый объект метода создается только в том случае, если класс, из которого он извлекается, совпадает или является производным классом класса, сохраненного в исходном объекте метода; в противном случае исходный объект метода используется как есть.

Ответы на вопрос(2)

Ваш ответ на вопрос