Kapitel 16. Überladen von Operatoren
Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com
Bei einigen Dingen bin ich hin- und hergerissen, zum Beispiel bei der Überladung von Operatoren. Ich habe die Überladung von Operatoren aus persönlichen Gründen weggelassen, weil ich gesehen habe, dass zu viele Leute sie in C++ missbrauchen.
James Gosling, Erfinder von Java1
In Python kannst du den Zinseszins mit einer Formel wie dieser berechnen:
interest
=
principal
*
((
1
+
rate
)
**
periods
-
1
)
Operatoren, die zwischen Operanden stehen, wie 1 + rate
, sind Infix-Operatoren. In Python können die Infix-Operatoren mit jedem beliebigen Typ umgehen. Wenn du also mit echtem Geld arbeitest, kannst du sicherstellen, dass principal
, rate
und periods
exakte Zahlen sind - Instanzen der Python-Klasse decimal.Decimal
- und die Formel wird wie geschrieben funktionieren und ein exaktes Ergebnis liefern.
Aber wenn du in Java von float
zu BigDecimal
wechselst, um genaue Ergebnisse zu erhalten, kannst du die Infix-Operatoren nicht mehr verwenden, weil sie nur mit den primitiven Typen funktionieren. Das ist dieselbe Formel, die für BigDecimal
Zahlen in Java codiert ist:
BigDecimal
interest
=
principal
.
multiply
(
BigDecimal
.
ONE
.
add
(
rate
)
.
pow
(
periods
).
subtract
(
BigDecimal
.
ONE
));
Es ist klar, dass Infix-Operatoren die Lesbarkeit von Formeln verbessern. Die Überladung von Operatoren ist notwendig, um die Notation von Infix-Operatoren ...
Get Fließendes Python, 2. Auflage now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.