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 lambda
s), 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)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…