Wie kann ich das eingebaute float
für meine Klasse überladen, wenn ich also float()
für eine Instanz davon anrufe, wird meine benutzerdefinierte Funktion anstatt der Standardfunktion aufgerufen?
Hi, ich habe meine eigene Fractions
-Klasse programmiert (für beliebig hohe Fließkommaoperationen). Es geht so (ich habe es noch nicht beendet):
Nun möchte ich eine Methode implementieren, die float()
überlädt, d. h. sie wird aufgerufen, wenn eine Instanz meiner Klasse an float()
übergeben wird. Wie mache ich das? Zuerst dachte ich:
Aber das hat nicht funktioniert. Auch eine Google-Suche oder die Python-Dokumente haben nicht geholfen. Ist es überhaupt möglich, es zu implementieren?
Definieren Sie die __float__()
spezielle Methode für Ihre Klasse.
Beachten Sie, dass diese Methode ein float
zurückgeben muss! Die Berechnung self.num / self.denom
gibt standardmäßig eine int
in Versionen von Python vor 3.0 zurück, vorausgesetzt beide Operanden sind Ganzzahlen. In diesem Fall würden Sie nur sicherstellen, dass einer der Operanden ein Gleitkomma ist: float(self.num) / self.denom
zum Beispiel.
Tags und Links python floating-point operator-overloading overloading