richtige Übergabe von Variablen...

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.
Antworten
genrich
User
Beiträge: 91
Registriert: Sonntag 27. Juni 2004, 17:46

Hi...

Programmiere gerade so rum... Dabei unterteile ich mein Programm in keline Häppchen in verschiedene PY-Files die ich per import einbinde... In diesen "Routinen"-PY-Files sind i.d.R. nur eine fette class...

Mein Problem ist nun, wie übergebe ich allgemeine Variableninhalte diesen Unterroutinen-Klassen?
Bisher übergebe ich es immer beim erstellen der Instanz:

Code: Alles auswählen

Wert1="WasAuchImmer"
Wert2="UndNochMehr"
Wert3=123456

import UnterroutineDatei

UnterroutineDatei.ArbeitClass(Wert1,Wert2,Wert3)
Aber funktioniert das nicht irgendwie anders?
Ich hab z.B. eine Pfad-Angabe, die für viele Routinen erforderlich ist. Mir erscheind es umständlich dieser immer beim Aufruf übergeben zu müssen... Gibt es keine Elegantere Lösung?
NOTZE
User
Beiträge: 106
Registriert: Mittwoch 21. Januar 2004, 20:28

hm es ist doch gut und richtig die werte beim Konstruktor aufruf mitzugeben.
Wo liegt ein problem?
genrich
User
Beiträge: 91
Registriert: Sonntag 27. Juni 2004, 17:46

Irgendwie ist es lästig, wenn eine Variable für alle Routinen gilt...
fs111
User
Beiträge: 170
Registriert: Samstag 15. November 2003, 11:42
Kontaktdaten:

genrich hat geschrieben:Irgendwie ist es lästig, wenn eine Variable für alle Routinen gilt...
Diese Aussage verstehe ich gar nicht, was meinst Du damit?

fs111
Pydoc-Integration in vim - Feedback willkommen: http://www.vim.org/scripts/script.php?script_id=910
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hi genrich,

Code: Alles auswählen

#!/usr/bin/env python
# Modul Glob.py
# Global gültige Werte fuer eine Anwendung

_glob = {}

def set(name, value, override=False):
    if not override and _glob.has_key(name): #Werte vor ueberschreiben schuetzen
        raise KeyError("%s already set in Glob!" % name)
    _glob[name] = value

def get(name):
    return _glob[name]
damit kannst Du Glob in deine Module importieren und dort dann Werte eintragen mit Glob.set(name, value) die von allen Modulen mit value = Glob.get(name) z.B. in der Initroutine geholt werden können. Du Kannst die Werte auch gleich in dem Modul bestimmen und zuweisen, falls sie sich über die Laufzeit nicht ändern.

Gruß

Dookie
[code]#!/usr/bin/env python
import this[/code]
genrich
User
Beiträge: 91
Registriert: Sonntag 27. Juni 2004, 17:46

Danke für die Anregung... Benutze ich jetzt auch so! 8)
Gast

@Dookie: Cool, sowas habe ich gesucht!
Als ich dein Snippet gesehen habe, dachte ich: Hey, das kenne ich doch noch aus meiner C++-Zeit.

thx, querdenker
querdenker
User
Beiträge: 424
Registriert: Montag 28. Juli 2003, 16:19
Wohnort: /dev/reality

OT:
der Gast war ich, wer oder was auch immer hat mich gerade abgemeldet(ich denke mal, das war der Feuerfuchs(der zickt momentan noch ein wenig)
Antworten