Python : Assert that variable is instance method?

inspect.ismethod is what you want to find out if you definitely have a method, rather than just something you can call.

import inspect

def foo(): pass

class Test(object):
    def method(self): pass

print inspect.ismethod(foo) # False
print inspect.ismethod(Test) # False
print inspect.ismethod(Test.method) # True
print inspect.ismethod(Test().method) # True

print callable(foo) # True
print callable(Test) # True
print callable(Test.method) # True
print callable(Test().method) # True

callable is true if the argument if the argument is a method, a function (including lambdas), an instance with __call__ or a class.

Methods have different properties than functions (like im_class and im_self). So you want

assert inspect.ismethod(Test().method)  

Leave a Comment