inspect.ismethod
est ce que vous voulez savoir si vous avez vraiment une méthode, plutôt que de simplement appeler quelque chose.
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
est vrai si l'argument si l'argument est un procédé, une fonction (y compris lambda
s), une instance de __call__
ou une classe.
Les méthodes ont des propriétés différentes de celles des fonctions (par exemple im_class
et im_self
). Donc, vous voulez
assert inspect.ismethod(Test().method)
Quel est le problème avec demander ici? – quano
La lecture de la source n'est pas utile - il écrit probablement du code qui doit connaître la réponse à l'exécution. Peut-être itérer à travers tout attr sur un objet, par exemple. –