[New-bugs-announce] [issue39997] "is" operator doesn't work on method returned from method descriptor
Yurii
report at bugs.python.org
Tue Mar 17 16:08:08 EDT 2020
New submission from Yurii <yurii at andrieiev.com>:
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 <report at bugs.python.org>
<https://bugs.python.org/issue39997>
_______________________________________
More information about the New-bugs-announce
mailing list