Lässt sich der Verweis auf eine Variable abspeichern?

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.
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

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
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Warhead
User
Beiträge: 15
Registriert: Montag 28. Juni 2010, 12:54

Ehrliche Antwort? ...
When altering one's own mind becomes as easy as programming a computer… What does it mean to be human?
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

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
Das Leben ist wie ein Tennisball.
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

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
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

Warhead hat geschrieben:Ehrliche Antwort? ...
Unbedingt...! Keine Sorge, ich pack' das! :D
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
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

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.
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

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
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

Darii hat geschrieben:Und beim nächsten Mal wäre es besser, wenn du gleich schreibst was du vorhast.
Hast Du Recht!

Gruß
mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Warhead
User
Beiträge: 15
Registriert: Montag 28. Juni 2010, 12:54

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.
When altering one's own mind becomes as easy as programming a computer… What does it mean to be human?
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

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 8)
Das Leben ist wie ein Tennisball.
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

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
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
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.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

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...? :wink:

Gruß
mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Warhead
User
Beiträge: 15
Registriert: Montag 28. Juni 2010, 12:54

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.
When altering one's own mind becomes as easy as programming a computer… What does it mean to be human?
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.
Warhead
User
Beiträge: 15
Registriert: Montag 28. Juni 2010, 12:54

@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.
Zuletzt geändert von Warhead am Mittwoch 7. Juli 2010, 13:00, insgesamt 1-mal geändert.
When altering one's own mind becomes as easy as programming a computer… What does it mean to be human?
Benutzeravatar
DaMutz
User
Beiträge: 202
Registriert: Freitag 31. Oktober 2008, 17:25

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.
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

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
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Antworten