Kann eine Python-Klasse eine neue Instanz ihrer Klasse zurückgeben?

8

Ist der folgende Python-Code gültig?

%Vor%     
cytinus 30.05.2012, 06:19
quelle

4 Antworten

17

Ja, es ist gültig. Die Klasse wird durch die Zeit definiert, zu der Sie ein Objekt erstellen und die Methode returnTest aufrufen.

%Vor%

Wenn jedoch eine Methode wie eine Factory funktioniert, sollten Sie die Klassenmethode Dekorateur. Wenn Vererbung und andere Belästigungen in den Weg kommen, kann dies helfen.

    
Noufal Ibrahim 30.05.2012, 06:23
quelle
1

Ja, es ist gültig. returnTest wird nicht ausgeführt, bis es aufgerufen wird. Es wird keine Endlosschleife erstellt, da die Methode für das neu erstellte Objekt nicht aufgerufen wird.

    
mayhewr 30.05.2012 06:24
quelle
0

Ja. Es ist ein gültiger Python-Code. Viele Programmiersprachen erlauben es, eine Instanz einer definierten Klasse zurückzugeben. Denken Sie an das Singleton -Muster.

    
user278064 30.05.2012 06:24
quelle
0

Ja, es funktioniert, aber es scheint, dass returnTest () immer dieselbe Instanz von Test ist.

%Vor%

Dies gilt für Python 2.7 und 3.2. @classmethod hat keinen Unterschied gemacht. Interessanterweise gibt pypy jedes Mal eine andere Instanz zurück:

%Vor%     
Mark Roberts 30.05.2012 06:28
quelle

Tags und Links