Wie mache ich eine Klassenmethode in Python?

8

In Ruby können Sie das tun:

%Vor%

Wie kann das in Python gemacht werden? Ich brauche eine Methode einer Klasse, die aufgerufen werden soll, ohne dass eine Instanz der Klasse aufgerufen wird. Wenn ich das versuche, bekomme ich diesen Fehler:

%Vor%

Das habe ich versucht:

%Vor%     
david4dev 06.11.2010, 09:43
quelle

3 Antworten

17

Sie suchen nach dem staticmethod Dekorator, mit dem Sie Methoden erstellen können, die kein erstes implizites Argument benötigen. Es kann so verwendet werden:

%Vor%

Wenn Sie andererseits von der Methode aus auf die Klasse (nicht die Instanz) zugreifen möchten, können Sie den classmethod decorator verwenden, der meistens auf die gleiche Weise verwendet wird:

%Vor%

Was noch aufgerufen werden kann, ohne das Objekt zu instanziieren ( A.a() ).

    
MatToufoutu 06.11.2010, 09:53
quelle
9

Dafür gibt es zwei Möglichkeiten:

%Vor%

Der Unterschied ist, dass eine statische Methode überhaupt keine impliziten Parameter hat. Eine Klassenmethode erhält die aufgerufene Klasse genau so, wie eine normale Methode die Instanz empfängt.

Welche Sie verwenden, hängt davon ab, ob die Methode Zugriff auf die Klasse haben soll oder nicht.

Einer kann ohne eine Instanz aufgerufen werden.

    
aaronasterling 06.11.2010 09:53
quelle
0

Sie können das Klassenobjekt auch in einer statischen Methode mit __class__ :

aufrufen %Vor%

Zumindest funktioniert das in Python 3.1

    
warvariuc 06.11.2010 12:37
quelle

Tags und Links