inspect.ismethod
ist, was Sie herausfinden möchten, wenn Sie definitiv eine Methode haben, anstatt nur etwas, das Sie anrufen können.
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
ist wahr, wenn das Argument, wenn das Argument ist ein Verfahren, eine Funktion (einschließlich lambda
s), eine Instanz mit __call__
oder einer Klasse.
Methoden haben andere Eigenschaften als Funktionen (wie im_class
und im_self
). So wollen Sie
assert inspect.ismethod(Test().method)
Was ist falsch mit der Frage hier? – quano
Das Lesen der Quelle ist keine Hilfe - vermutlich schreibt er einen Code, der die Antwort zur Laufzeit wissen muss. Eventuell alle Attribute eines Objekts durchlaufen. –