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.
@p90: Löse es anders, denn bei der Zuweisung sehe ich keine Möglichkeit das automatisch zu machen. Objekte bekommen nicht mit wenn sie aus einem Tupel geholt werden oder wenn sie an einen Namen gebunden werden.
@p90: Dabei wird ein Objekt vom Typ `M` erzeugt und darauf die `ex()`-Methode aufgerufen und das Ergebnis wird an `a` gebunden. Also das gleiche was bei ``M().ex()`` passieren würde wenn Du das nicht zum Property machst. Das „was sonst” dabei passiert kannst Du nicht in das Tupel packen. Du kannst höchstens eine Funktion in das Tupel packen die das Property abfragt wenn sie aufgerufen wird. Die musst Du nach dem entpacken des Tupels dann aber auch explizit aufrufen um den Wert zu bekommen — automagisch geht das nicht.
Und sollte das Tupel aus dem Beispiel welches Du an `U` bindest eigentlich irgendwann mal so erstellt und dann gepickelt worden sein, dann steht in der gepickleten Datei als erstes Element in dem Tupel eine 5 und es gibt keine möglichkeit mehr heraus zu finden mit welchem `M`-Objekt die irgendwann mal erzeugt wurde.
p90 hat geschrieben:
Warum reicht bei einer property der Aufruf von M().ex statt M().ex()?
Damit es nicht "verpufft": Das ist ja gerade der Witz an Properties! Der Zugriff ist nach außen exakt mit dem Zugriff auf ein Attribut eines Objektes; d.h. Du kannst die Interna einer Klasse auch nachträglich ändern, ohne dass sich am API etwas ändert
In Sprache wie Java oder C++ musst Du entweder von vornherein auf Getter und Setter setzen, wenn Du noch nicht weißt, ob Du mal Logiken beim Setzen oder Auslesen eines Attributes brauchst, oder aber später API-Änderungen in Kauf nehmen. Dank Properties braucht man sich darüber in anderen Sprachen - wie eben Python - keine Gedanken machen
p90 hat geschrieben:
Warum reicht bei einer property der Aufruf von M().ex statt M().ex()?
Damit es nicht "verpufft": Das ist ja gerade der Witz an Properties! Der Zugriff ist nach außen exakt mit dem Zugriff auf ein Attribut eines Objektes; d.h. Du kannst die Interna einer Klasse auch nachträglich ändern, ohne dass sich am API etwas ändert
In Sprache wie Java oder C++ musst Du entweder von vornherein auf Getter und Setter setzen, wenn Du noch nicht weißt, ob Du mal Logiken beim Setzen oder Auslesen eines Attributes brauchst, oder aber später API-Änderungen in Kauf nehmen. Dank Properties braucht man sich darüber in anderen Sprachen - wie eben Python - keine Gedanken machen
Hi,
warum es ein solches Konstrukt gibt war mir schon klar.
Meine Frage war eher wie Python zwischen einer Property bei der ja eine Funktion ausgeführt werden muss und einer "normalen" variable unterscheidet.