WIe genau ist hier die /= Methode zu verstehen[Python]?
Hallo, ich frage mich bei dem Beispiel unten, wie die erweiterte Zuweisung in diesem Zusammenhang zu verstehen ist: Was genau wird da womit dividiert? Ich habe es mit """???""" markiert. Genauer unter der __add__ Methode.
Was die Zuweisung an sich macht, verstehe ich, heisst zB 10 /2 = 5.
Ausserdem würde ich gerne wissen, wie man das self.Einheit in den eckigen Klammern auf gut Deutsch lesen sollte: Ich verstehe Programmcode, indem ich mir Sätze baue, die mir den Code von Computersprache übersetzen. Ich weiss, dass es dazu dient, dass innerhalb der Methode die richtige Einheit benutzt werden soll, aber wie würdet ihr das in menschliche Sprache übersetzen? Sowas wie "Rechne Zahlenwert * Einheit, benutz dabei gewünschte Einheit"?
Da ich bisher noch nicht mit eckigen Klammern in Klassen zu tun hatte (lerne erst seit kurzem), weiss ich nicht, wann genau man eckige Klammern immer anwendet. Kenne das so nur von Listen.
Danke für jede Rückmeldung!
#Klasse erzeugen
class Laenge:
#Dictionary mit dem Namen Umrechnung erzeugen:
Umrechnung = {"m" : 1, "dm" : 0.1, "cm" : 0.01, "mm" : 0.001, "km" : 1000,
"ft" : 0.3048, "in" : 0.0254, "mi" : 1609344} #ft = Fuß, in = inches, mi = Meilen
#__init__Methode definieren
def __init__(self, zahlenwert, einheit):
#Attribute definieren: Zahlenwert, Einheit
self.Zahlenwert = zahlenwert #Gibt die Zahl an, die benutzt wird
self.Einheit = einheit #Sagt, welche Einheit jeweils benutzt wird
#str Methode: Lesbare Schreibweise erzeugen, wenn Ergebnisse ausgegeben werden
def __str__(self):
return "{:f} {}".format(self.Zahlenwert, self.Einheit)
# __add__ Methode: Erzeugt den Plus-Operator
def __add__(self, other):
z = self.Zahlenwert * Laenge.Umrechnung[self.Einheit] #Zahlenwert 1, der benutzt wird
z += other.Zahlenwert * Laenge.Umrechnung[other.Einheit] #Anderer Zahlenwert 2, der benutzt wird
z /= Laenge.Umrechnung[self.Einheit] """???"""
return Laenge(z, self.Einheit)
# __sub__ Methode: Erzeugt den Minus-Operator
def __sub__(self, other):
z = self.Zahlenwert * Laenge.Umrechnung[self.Einheit]
z -= other.Zahlenwert * Laenge.Umrechnung[other.Einheit]
z /= Laenge.Umrechnung[self.Einheit]
return Laenge(z, self.Einheit)
a1 = Laenge(20, "dm")
a2 = Laenge(10, "km")
print(a1 + a2)
print(a2 + a1)
2 Antworten
Python kann ich nur rudimentär, aber "z /= x" wird wohl die Kurzform sein für "z = z / x", so wie darüber "z += x" kurz für "z = z + x" steht.
self.Einheit in den eckigen Klammern
Das ist der Index für's Array namens Umrechnung in derselben Klasse.
So wichtig, dass Sie Ihren Sohn rufen müssen, ist das wirklich nicht, aber vielen Dank! 😅 Danke auch an @DonkeyShot. Ich frage mich nur, was da womit dividiert wird.
Wie gesagt:
z /= Laenge.Umrechnung[self.Einheit]
entspricht
z = z / Laenge.Umrechnung[self.Einheit]
Habe meinen sohn angerufen, helfe ja gerne :-)
Er sagt es wir z durch ``Laenge.Umrechnung[self.Einheit]`` dividiert und dann wieder z zugewiesen. Also quasi wie z = z/Laenge.Umrechnung[self.Einheit], wie DonkeyShot gesagt hat
...wie ich an der anderen Antwort sehe, ist das kein Index sondern der Key für's Dictionary. Sry, nicht genau hingesehen.
z /= Laenge.Umrechnung[self.Einheit] """???"""
z=z/Laenge.Umrechnung[self.Einheit]
self.Einheit ist ein String, z.B. in für inches. Laenge.Umrechnung['in'] holt den Wert zum Schlüssel in aus dem Dictionary.
danke, hätte sonst schnell meinen sohn gefragt, der geht auch immer so spät ins bett