New submission from Yurii <[email protected]>:
I reproduced this in python 3.8 and python 3.6. The last line displays the bug
itself, all other lines do the setup and pretty much explain WHY I think that
is the bug.
class Class:
def method(self): ...
instance = Class()
# expected: ids match
assert id(Class.method.__get__(None, Class)) == id(Class.method)
# expected: __eq__ returns True
assert Class.method.__get__(None, Class) == Class.method
# expected: is returns True
assert Class.method.__get__(None, Class) is Class.method
# expected: ids match
assert id(Class.method.__get__(instance, Class)) == id(instance.method)
# expected: __eq__ returns True
assert Class.method.__get__(instance, Class) == instance.method
# UNEXPECTED: is returns False, why?..
assert Class.method.__get__(instance, Class) is not instance.method # why?
----------
messages: 364474
nosy: yandrieiev
priority: normal
severity: normal
status: open
title: "is" operator doesn't work on method returned from method descriptor
type: behavior
versions: Python 3.8
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue39997>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com