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