Подтвердить что ты не робот

Оператор Python "is": неожиданное поведение при сравнении несвязанного метода

В Python 2.7.9, когда я назначаю несвязанный метод новому атрибуту и ​​сравниваю его с выражением is, результат False:

In [1]: class A(object):
   ...:     def a(self):
   ...:         pass
   ...:

In [2]: A._a = A.a

In [3]: print A.a, A._a
<unbound method A.a> <unbound method A.a>

In [4]: print id(A.a), id(A._a)
4499595904 4499595904

In [5]: A.a is A._a
Out[5]: False

Это очень противоречиво, и я не мог найти никакой ссылки или документации, чтобы объяснить это поведение. Что еще, когда я тестирую один и тот же код в Python 3.4.2, результат оказался True. Я предполагаю, что это ошибка в Python 2.7, но исправлена ​​в Python 3, может ли кто-нибудь помочь мне найти фактическую причину, почему это происходит?

4b9b3361