inspect.ismethod
- это то, что вы хотите узнать, если у вас определенно есть метод, а не просто то, что вы можете вызвать.
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
- истина, если аргумент, если аргумент является методом, функцией (включая lambda
s), экземпляром с __call__
или классом.
Методы имеют свойства, отличные от функций (например, im_class
и im_self
). Итак, вы хотите
assert inspect.ismethod(Test().method)