Seite 1 von 1

Variablen explizit per Referenz übegeben

Verfasst: Mittwoch 4. Mai 2005, 17:41
von DasPinsch
Wie kann man Variablen explizit per Referenz übergeben?
Beispiel:

Code: Alles auswählen

def init(screen):
   pygame.init()
   screen = pygame.display.set_mode((1024, 768))

screen = None
init(screen)

screen ist danach immer noch None... Ich weiß dass ich hier z.B. auch mit einem Rückgabewert arbeiten könnte, allerdings geht das in meinem Programm nur schlecht.
MfG

Edit (Leonidas): Code in Python-Tags gesetzt.

Verfasst: Mittwoch 4. Mai 2005, 18:12
von Leonidas
Das müsstest du entweder:
  • über global lösen, was aber meist schlechter Stil ist.
  • Eine Klasse erstellen und aus screen self.screen machen, so wie hier

Verfasst: Donnerstag 5. Mai 2005, 12:41
von DasPinsch
Mhh, jetzt weiß ich auch wieder warum ich C++ so mag, man weiß was man tut =)

Werde es dann anderes lösen müssen, was allerdings die komplette Eleganz meines Programmes zunichte macht :evil: :wink:

Re: Variablen explizit per Referenz übegeben

Verfasst: Donnerstag 5. Mai 2005, 15:12
von gerold
DasPinsch hat geschrieben: Ich weiß dass ich hier z.B. auch mit einem Rückgabewert arbeiten könnte, allerdings geht das in meinem Programm nur schlecht.
Hi!
Das hat schon seine Richtigkeit mit der Rückgabe unter Python. Was meinst du ist einfacher und durchschaubarer für jemanden der den Code liest?
init(screen)
oder
screen = init()
Beim zweiten Aufruf ist jedem sofort klar, dass die Variable screen verändert oder neu erstellt wird. Beim ersten Aufruf muss ich init() kennen um zu wissen, dass screen verändert wird. Das ist einer der wunderbaren Vorteile von Python. Es wird einem nicht so einfach gemacht, unüberschaubaren Code zu schreiben.

mfg
Gerold
:-)

Verfasst: Donnerstag 5. Mai 2005, 16:48
von Leonidas
DasPinsch hat geschrieben:Mhh, jetzt weiß ich auch wieder warum ich C++ so mag, man weiß was man tut =)
Nein, das ist keine Eleganz. Das wäre eine Nebenwirkung, die man am besten vermeidet.

Ich weiß ja nicht warum sich gerolds Vorschlag nicht in deinem Programm einsetzen lässt, ich würde es so machen.