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.