inspect.ismethod
è quello che vuoi scoprire se hai sicuramente un metodo, piuttosto che solo qualcosa che puoi chiamare.
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
è vero se l'argomento se questo è un metodo, una funzione (compresi lambda
s), un'istanza con __call__
o una classe.
I metodi hanno proprietà diverse dalle funzioni (come im_class
e im_self
). Quindi vuoi
assert inspect.ismethod(Test().method)
fonte
2009-08-11 15:10:56
Cosa c'è di sbagliato nel chiedere qui? – quano
Leggere il sorgente non è di alcun aiuto, presumibilmente sta scrivendo del codice che deve conoscere la risposta in fase di esecuzione. Forse iterando attraverso tutti gli attr su un oggetto, per esempio. –