Seite 1 von 2
Lässt sich der Verweis auf eine Variable abspeichern?
Verfasst: Montag 5. Juli 2010, 14:55
von mutetella
Hallo,
lässt sich folgendes irgendwie machen:
a = 10
b = (Verweis auf a) + 10
In obigem Beispiel wäre b == 20. Wenn dann an anderer Stelle
a = 15
zugewiesen bekommt, wäre b == 25.
Geht sowas? Oder ist das wieder so eine hirnrissige Idee von mir?
Gruß
mutetella
Re: Lässt sich der Verweis auf eine Variable abspeichern?
Verfasst: Montag 5. Juli 2010, 14:58
von Warhead
Ehrliche Antwort? ...
Re: Lässt sich der Verweis auf eine Variable abspeichern?
Verfasst: Montag 5. Juli 2010, 14:59
von EyDu
Hallo.
Das kann man mit Deskriptoren (oder direkt per Properties) lösen. Vielleicht solltest du aber genauer beschreiben was du machen möchtest. Im ersten Moment hört sich deine Idee nicht besonders gut an.
Sebastian
Re: Lässt sich der Verweis auf eine Variable abspeichern?
Verfasst: Montag 5. Juli 2010, 15:35
von Darii
mutetella hat geschrieben:Geht sowas? Oder ist das wieder so eine hirnrissige Idee von mir?
Nein, das geht so nicht. Entweder du musst das ganze mit einer Funktion lösen:
Code: Alles auswählen
a = 10
b = lambda: a + 10
print b() # 20
a = 15
print b() # 25
Oder in komplizierteren Fälle mit einer Klasse. Dafür sind die schließlich da.
Evtl. hilft dir auch sympy.
Code: Alles auswählen
from sympy import *
var("a")
b = a + 10
print b.evalf(subs={a: 10}) # 20
print b.evalf(subs={a: 15}) # 25
Re: Lässt sich der Verweis auf eine Variable abspeichern?
Verfasst: Montag 5. Juli 2010, 15:38
von mutetella
Warhead hat geschrieben:Ehrliche Antwort? ...
Unbedingt...! Keine Sorge, ich pack' das!
EyDu hat geschrieben:Vielleicht solltest du aber genauer beschreiben was du machen möchtest.
Ich habe eine Liste mit absoluten Rechteckkoordinaten:
abs = [[1, 23, 78, 120], [84, 23, 78, 120], [167, 23, 78, 120]]
Desweiteren habe ich eine Liste mit Text und relationalen Koordinaten:
rel = [['Text 1', 5, 5], ['Text 2', 5, 25], ['Text 3', 5, 45]]
Wenn ich nun das erste Rechteck zeichne, verwende ich die Koordinaten abs[0].
Zeichne ich dann den ersten Texteintrag, verwende ich
abs[0][0] + rel[0][1] für die x-Koordinate und
abs[0][1] + rel[0][2] für die y-Koordinate
Genauso geht es dann für Text 2 und Text 3.
In der Funktion, in der diese Dinge gezeichnet werden, möchte ich aber keine Koordinaten mehr ermitteln müssen. Natürlich könnte ich die Rechenarbeit in eine separate Funktion setzen, aber vielleicht gibt es ja eben auch eine Möglichkeit, nach der meine rel-Liste so oder so ähnlich ausschauen könnte:
rel = [['Text 1',
(Verweis auf abs[0][0]) + 5,
(Verweis auf abs[0][1]) + 5], ['Text 2', ...]
Ich hoffe, das jetzt auch verständlich erklärt zu haben...
Gruß
mutetella
Re: Lässt sich der Verweis auf eine Variable abspeichern?
Verfasst: Montag 5. Juli 2010, 15:40
von Darii
Nimm eine Funktion, genau für so etwas gibt es sie. Und beim nächsten Mal wäre es besser, wenn du gleich schreibst was du vorhast. Dann kann man dir vielleicht auch helfen.
Re: Lässt sich der Verweis auf eine Variable abspeichern?
Verfasst: Montag 5. Juli 2010, 15:44
von mutetella
Darii hat geschrieben:... du musst das ganze mit einer Funktion lösen ...
So wie's aussieht werde ich das wohl auch machen.
Darii hat geschrieben:Evtl. hilft dir auch sympy.
Kannte ich noch gar nicht. Werd' ich mir merken, ist aber für diesen Fall wohl nicht ganz das Richtige.
Danke!
Gruß
mutetella
Re: Lässt sich der Verweis auf eine Variable abspeichern?
Verfasst: Montag 5. Juli 2010, 15:45
von mutetella
Darii hat geschrieben:Und beim nächsten Mal wäre es besser, wenn du gleich schreibst was du vorhast.
Hast Du Recht!
Gruß
mutetella
Re: Lässt sich der Verweis auf eine Variable abspeichern?
Verfasst: Montag 5. Juli 2010, 18:14
von Leonidas
Wenn ich mich richtig erinnere gibt es so eine Funktionalität seit Jahren in Common Lisp unter dem Namen Cells, davon gibt es auch Python-Ports. Ob das ne gute Idee ist, ist natürlich auf einem ganz anderen Blatt geschrieben.
Re: Lässt sich der Verweis auf eine Variable abspeichern?
Verfasst: Montag 5. Juli 2010, 21:39
von Warhead
Hach ja ... dann gebe ich doch mal eine Antwort auf die Frage "
ob es sinnvoll ist oder nicht":
Nein, ist es leider nicht!
Und eine gute Idee ist es ebenfalls "auch" nicht

.
Nur weil man ein Blackberry Innenleben in eine iPhone Case prügeln
könnte, ist es ja letztendlich wiederrum auch keine gute Idee.
Und für das Referece-Paradigma fällt mir bei besten Willem kein "wirkliches" Szenario ein, bei dem die Vorteile den von meinen Vorpostern genannten pythonischen/alternativen Wegen überwiegen würden.
Re: Lässt sich der Verweis auf eine Variable abspeichern?
Verfasst: Montag 5. Juli 2010, 22:47
von EyDu
Code: Alles auswählen
>>> abs = [[1, 23, 78, 120], [84, 23, 78, 120], [167, 23, 78, 120]]
>>> rel = [['Text 1', 5, 5], ['Text 2', 5, 25], ['Text 3', 5, 45]]
>>> [(ax+x, ay+y) for ((ax, ay, _, _), (_, x, y)) in zip(abs, rel)]
[(6, 28), (89, 48), (172, 68)]
Ich stelle mir allerdings die Frage, warum du offensichtlich zusammengehörige Daten nicht auch entsprechen ablegst. Eine Verbindung über Indizes ist eine denkbar schlechte Lösung.
Edit: Ja, hier wird abs verdeckt

Re: Lässt sich der Verweis auf eine Variable abspeichern?
Verfasst: Dienstag 6. Juli 2010, 07:14
von mutetella
EyDu hat geschrieben:Ich stelle mir allerdings die Frage, warum du offensichtlich zusammengehörige Daten nicht auch entsprechen ablegst.
Die Frage lässt mir auch keine Ruhe...

Es widerstrebt mir einfach, die absoluten (ist das überhaupt korrekt ausgedrückt?) Koordinaten, die in einer Kalenderansicht die Position und Ausmaße eines Tages darstellen, mit den relationalen Koordinaten, die innerhalb der Koordinaten eines Tages wiederum die Position der verschiedenen Objekte wie Text des Datums, Trennstriche etc. bestimmen, in einer Liste zu mischen.
Nachdem ich die absoluten Koordinaten in der Liste cache, um beim Navigieren über die Zeiträume nicht jedes mal alles neu berechnen zu müssen, erscheint mir diese Trennung ebenfalls sinnig, da bei einer Änderung der Fenstergröße wohl die absoluten, aber nie die relationalen Koordinaten geändert werden.
Oder bin ich einfach nur fantasielos? Bin für Anregungen sehr dankbar...!
EyDu hat geschrieben:Ja, hier wird abs verdeckt
Dein Beispiel habe ich verstanden, aber was meinst Du damit, dass abs verdeckt wird?
Warhead hat geschrieben:Und für das Referece-Paradigma ...
Was meinst Du damit?
Gruß
mutetella
Re: Lässt sich der Verweis auf eine Variable abspeichern?
Verfasst: Dienstag 6. Juli 2010, 07:39
von BlackJack
mutetella:
Code: Alles auswählen
In [29]: abs?
Type: builtin_function_or_method
Base Class: <type 'builtin_function_or_method'>
String Form: <built-in function abs>
Namespace: Python builtin
Docstring:
abs(number) -> number
Return the absolute value of the argument.
Ich frage mich ob man diese ganzen Dinge nicht als Objekte statt Listen realisieren kann. Dann würden die Objekte mit den relativen Koordinaten in Objekten mit den absoluten stecken und könnten diese nach dem "Versatz" fragen.
Re: Lässt sich der Verweis auf eine Variable abspeichern?
Verfasst: Dienstag 6. Juli 2010, 07:58
von Leonidas
Warhead hat geschrieben:Und für das Referece-Paradigma fällt mir bei besten Willem kein "wirkliches" Szenario ein, bei dem die Vorteile den von meinen Vorpostern genannten pythonischen/alternativen Wegen überwiegen würden.
Abhängige Zellen in einer Tabellenkalkulation könnten so ein Szenario sein.
Re: Lässt sich der Verweis auf eine Variable abspeichern?
Verfasst: Dienstag 6. Juli 2010, 08:24
von mutetella
BlackJack hat geschrieben:Ich frage mich ob man diese ganzen Dinge nicht als Objekte statt Listen realisieren kann.
Wenn ich eine Kalenderansicht mit 7 Tagen habe, so habe ich 7 items mit absoluten und je item diverse item_parts mit relativen Koordinaten.
Wenn ich dann eine Klasse Item() habe, so muss ich doch die diversen item_parts innerhalb der Klasse auch wieder in einer Liste speichern. Und die 7 Instanzen der Klasse Item() müssen doch auch irgendwo abgelegt sein (Liste?)...
Die Richtung, in die Du zeigst, fühlt sich für mich total gut an, nur habe ich keine konkrete Vorstellung, wie sich das realisieren ließe... Da bin ich einfach noch a bisl schwach auf der Brust... Kannst Du mir da noch ein bischen mehr 'Fleisch' hinwerfen...?
Gruß
mutetella
Re: Lässt sich der Verweis auf eine Variable abspeichern?
Verfasst: Dienstag 6. Juli 2010, 10:22
von Warhead
Leonidas hat geschrieben:...
Abhängige Zellen in einer Tabellenkalkulation könnten so ein Szenario sein.
...
Mhm, da bei TKs jedoch hinter einer "Zelle" i.d.R mehr Informationen als nur der reine Wert abgelegt wird, würde ich gerade "deswegen" hier von der pragmatischen Seite her an das Problem herangehen und es mittels Klassen lösen.
Re: Lässt sich der Verweis auf eine Variable abspeichern?
Verfasst: Dienstag 6. Juli 2010, 10:29
von BlackJack
@Warhead: Verstehe das Argument gegen "cells" an der Stelle nicht? Die Klassen, die die Tabellenzellen modellieren kennen dann halt auch das zugehörige `cell`-Objekt.
Re: Lässt sich der Verweis auf eine Variable abspeichern?
Verfasst: Dienstag 6. Juli 2010, 10:47
von Warhead
@BlackJack: Eine explizite Ablehnung der Verwendung von "cells" habe ich auch nicht geäussert. Ich bezog mich lediglich auf das von Leonidas vorgeschlagene "mir nicht vorstellebare Szenario (s.Post dafor)" von Zellen-Referenzen in einer Tabellenkalkulation.
Re: Lässt sich der Verweis auf eine Variable abspeichern?
Verfasst: Dienstag 6. Juli 2010, 18:12
von DaMutz
ich weiss ja nicht welches GUI Framework du verwendest. Gibt es aber nicht die Möglichkeit jeden Tag als einzelnes Widget zu modelieren und dann könntest du doch jeden Tag absolut positionieren und jedes Item an diesem Tag wäre auf dem Widget auch absolute aber global gesehen relativ (kompliziert)
Oder du veränderst für jeden Tag der Nullpunkt der Positionierung um dann die Elemente an diesem Tag relative zur Ecke zu platzieren.
Re: Lässt sich der Verweis auf eine Variable abspeichern?
Verfasst: Dienstag 6. Juli 2010, 18:37
von mutetella
DaMutz hat geschrieben:ich weiss ja nicht welches GUI Framework du verwendest.
wxPython
DaMutz hat geschrieben:Gibt es aber nicht die Möglichkeit jeden Tag als einzelnes Widget zu modelieren und ...
Anfangs hatte ich das so gelöst, jeder Tag war ein Panel in einem GridSizer... Dass das aber früher oder später (nicht nur wegen der Performance) im Wahnsinn endet, war mir bald klar...
Ich ging dann dazu über, jeden Tag als Instanz der Klasse Day() darzustellen. Allerdings hatte ich auch damit bald Performance-Probleme, wenn beim Navigieren über die Monate ständig unzählige getter und setter stattfinden.
Inzwischen gibt es lediglich noch die Klasse View(), die alle Elemente einer Kalenderansicht, genauer gesagt die Koordinaten und Texte, in Dictionaries ablegt und aus diesen heraus zeichnet.
Ich wäre aber schon daran interessiert, wie Du das mit einem Widget (welches Art) modellieren würdest.
DaMutz hat geschrieben:Oder du veränderst für jeden Tag der Nullpunkt der Positionierung ...
Könntest Du mir das näher erklären?
Gruß
mutetella