[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