Wenn eine Variable entweder auf eine Funktion oder eine Klassenmethode verweist, wie kann ich herausfinden, welche es ist, und den Klassentyp erhalten, wenn es sich um eine Klassenmethode handelt, insbesondere wenn die Klasse noch wie im Beispiel deklariert wird.Wie kann man zwischen einer Funktion und einer Klassenmethode unterscheiden?
z.
def get_info(function_or_method):
print function_or_method
class Foo(object):
def __init__(self):
pass
get_info(__init__)
def bar():
pass
get_info(bar)
Update nach den ersten beiden Antworten von David und JF Sebastian in Frage zu stellen Sie einen Punkt noch einmal betonen, die JF Sebastian angedeutet, ich möchte es unterscheiden können, wenn die Funktion in der Klasse deklariert wird (Wenn der Typ, den ich erhalte, eine Funktion und keine gebundene oder ungebundene Methode ist). dh. wo der erste Aufruf an get_info(__init__)
passiert, möchte ich in der Lage sein zu erkennen, dass es eine Methode ist, die als Teil einer Klasse deklariert wird.
Diese Frage kam, da ich einen Dekorateur um es bin setzen und es wird ein Handle für die init Funktion und ich kann nicht wirklich herausfinden, ob ein Verfahren innerhalb einer Klasse oder als Stand-alone-Funktion deklariert wird
Es gibt keinen Grund, warum ein Dekorator für BEIDE ungebundene Funktionen und Methodenfunktionen arbeiten sollte. Warum versuchst du das zu tun? Warum nicht zwei Dekorateure? –