Wie können Sie in Python den Namen der Klasse einer Mitgliedsfunktion erhalten?

8

Ich habe eine Funktion, die eine andere Funktion als Parameter übernimmt. Wenn die Funktion ein Mitglied einer Klasse ist, muss ich den Namen dieser Klasse finden. ZB

%Vor%

Ich dachte

%Vor%

würde meine Probleme lösen, aber das sagt mir nur, dass testFunc eine Funktion ist.

    
Charles Anderson 20.11.2008, 16:30
quelle

4 Antworten

11
%Vor%

Ссылка

  

im_class ist die Klasse von im_self für   gebundene Methoden oder die Klasse, die gefragt hat   für die Methode für ungebundene Methoden

    
Piotr Lesnicki 20.11.2008, 16:42
quelle
5

Ich bin kein Python-Experte, aber funktioniert das?

%Vor%

Es scheint für gebundene Methoden zu funktionieren, aber in Ihrem Fall verwenden Sie möglicherweise eine ungebundene Methode. In diesem Fall könnte das besser funktionieren:

%Vor%

Hier ist der Test, den ich verwendet habe:

%Vor%

Oh ja, noch etwas:

%Vor%

Wenn Sie also etwas kugelsicheres wollen, sollte es auch __objclass__ und __self__ behandeln. Aber Ihre Laufleistung kann variieren.

    
Chris Jester-Young 20.11.2008 16:35
quelle
4

Von python 3.3 ist .im_class verschwunden. Sie können stattdessen .__qualname__ verwenden. Hier ist die entsprechende PEP: Ссылка

%Vor%     
Conchylicultor 03.12.2016 22:12
quelle
3

Instanzmethoden haben Attribute .im_class .im_func .im_self

Ссылка

Sie möchten wahrscheinlich sehen, ob die Funktion hasattr.im_class hat, und die Klasseninformationen von dort abrufen.

    
JimB 20.11.2008 16:53
quelle