Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Ich wollte eine Mehrfachzuweisung anstatt einem Dreieckstausch zum Vertauschen vom jeweiligen `text`-Wert zweier Objekte verwenden. Der Zugriff auf die jeweiligen Werte geht aber nur über entsprechende Methoden (`setText()`, `getText()`).
Ich hab den Code mal auf das Wesentliche verkürzt.
In Python kann man das nicht. Andere sprachen wie C++ erlauben das für gewisse Datentypen, die einen sogenannten lvalue darstellen. Allerdings ist das dort auch eher unüblich.
Atalanttore hat geschrieben: ↑Montag 15. Oktober 2018, 15:44
Also kann man Funktionsaufrufe und Zuweisungen generell nicht miteinander verknüpfen.
Dann würde ja fast gar nichts mehr funktionieren. Es ist einfach so, dass links der Name für die Zuweisung steht und rechts der Wert. Folgendes wäre ja genau so wenig ausführbar:
__deets__ hat geschrieben: ↑Montag 15. Oktober 2018, 15:50
In Python kann man das nicht. Andere sprachen wie C++ erlauben das für gewisse Datentypen, die einen sogenannten lvalue darstellen. Allerdings ist das dort auch eher unüblich.
Die folgende Erklärung von MSDN zu lvalue habe ich kaum verstanden, aber trotzdem danke für den Hinweis.
MSDN hat geschrieben:Jeder C++-Ausdruck ist entweder ein lvalue oder einen rvalue. Ein lvalue verweist auf ein Objekt an, das über einen einzelnen Ausdruck hinaus beibehalten wird. Sie können sich einen lvalue als ein Objekt vorstellen, das über einen Namen verfügt. Alle Variablen, einschließlich nicht veränderbarer (const) Variablen, sind lvalues. Ein rvalue ist ein temporärer Wert, der nicht über den Ausdruck hinaus beibehalten wird, der diesen nutzt.
URL: https://msdn.microsoft.com/de-de/librar ... 2147217396
@Atalanttore:
Was außer dem reinen Namen noch geht, ist x.y = z sowie x['y'] = z und x[0] = 1. Aber dass ein Wert von der rechten Seite magisch in die Klammern auf der linken Seite rutscht, ist leider nicht möglich.
Atalanttore hat geschrieben: ↑Montag 15. Oktober 2018, 18:22
Die folgende Erklärung von MSDN zu lvalue habe ich kaum verstanden, aber trotzdem danke für den Hinweis.
Ein lvalue ist halt ein Datentyp, der auch links in der Gleichung stehen darf. Ein rvalue darf nur rechts stehen. Wenn du weiter auf der Seite liest, dann siehst du auch passende Beispiele dafür. Das soll dich aber nicht weiter verwirren. Es geht hier ja um Python und nicht um C++.
Atalanttore hat geschrieben: ↑Montag 15. Oktober 2018, 18:35
BTW, für Strings gibt es ja die Methode `format()`, wo man Platzhalter für Werte definieren kann.
Ja, die gibt es. Das sind Methoden-Parameter, die dann in den String wie gewünscht eingefügt werden. Nur hat das nicht wirklich etwas mit dem Problem zu tun, das du hier beschrieben hast. Oder etwa doch...?
Das die Variable, der etwas zugewiesen werden soll, links neben dem Zuweisungsoperator steht, ist doch eigentlich der Standard oder verwechsle ich da was?
@Atalanttore: Das ist sehr verbreitet ja. Es kann aber auch anders herum gemacht werden. Zum Beispiel könnte man einen Pfeil nach rechts als Zuweisungsoperator haben, also so etwas wie ``a -> b`` oder mit einem Wert ``42 -> answer``. Auch in Python gibt es Zuweisungen wo das Ziel rechts vom Operator/Schlüsselwort steht: ``import a as b`` oder ``except RuntimeError as error:``.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman