inspect.ismethod
es lo que quiere saber si definitivamente tiene un método, en lugar de algo a lo que puede llamar.
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
es cierto si el argumento si el argumento es un método, una función (incluyendo lambda
s), de una instancia con __call__
o una clase.
Los métodos tienen propiedades diferentes a las funciones (como im_class
y). Entonces usted quiere
assert inspect.ismethod(Test().method)
¿Qué hay de malo en preguntar aquí? – quano
Leer la fuente no sirve de nada, presumiblemente está escribiendo algún código que necesita saber la respuesta en tiempo de ejecución. Posiblemente iterando a través de todos los atributos de un objeto, por ejemplo. –