Accessing classmethod
of a class always return a different object. This is unlike instance or static methods.
class Foo(object):
@classmethod
def foo_classmethod(cls):
pass
def foo_instancemethod(self):
pass
@staticmethod
def foo_staticmethod():
pass
and when tried to compare
In [37]: print(Foo.foo_instancemethod is Foo.foo_instancemethod)
True
In [38]: print(Foo.foo_staticmethod is Foo.foo_staticmethod)
True
In [39]: print(Foo.foo_classmethod is Foo.foo_classmethod)
False
This behavior is same in Python 2 and 3. Does this look like a bug? I came across this while pickling a classmethod in Python3 and doing the is
check on the unpickled object.