Override + Operator in Python für float + obj

8

Ich habe eine Klasse Vec3D (siehe Ссылка )

Zur Zeit erlaube ich Vec3D (1,0,0) + 1,2, aber ich frage mich, wie ich den + Operator so überladen soll, dass ich folgende Ausgabe bekomme:

%Vor%

Code ist nicht erforderlich, aber nur ein Hinweis, in welche Richtung ich schauen soll. Etwas allgemeineres ist nützlicher als eine spezifische Implementierung, da ich dasselbe für Multiplikation, Subtraktion usw. implementieren muss.

    
Arnab Datta 14.10.2011, 01:04
quelle

3 Antworten

10

Sie suchen __radd__ :

%Vor%

Wenn das Objekt auf der linken Seite des Zusatzes das Hinzufügen des Objekts auf der rechten Seite nicht unterstützt, wird das Objekt auf der rechten Seite auf die Methode __radd__ magic überprüft.

    
agf 14.10.2011, 01:11
quelle
3

Sie möchten die Methoden __add__ (und möglicherweise __radd__ und __iadd__ ) verwenden. Weitere Informationen finden Sie Ссылка .

    
Rick Copeland 14.10.2011 01:11
quelle
3

implementieren __radd__ . Wenn Sie 3.3 + Vec3D(1,0,0) aufrufen, solange float nicht die Methode __add__(y) hat, wobei y Vec3D ist, wird Ihre reflektierte Version __radd__ aufgerufen.

    
Yanshuai Cao 14.10.2011 01:14
quelle

Tags und Links