Hallo,
ich stehe mal wieder auf dem Schlauch. Ich versuche mich gerade daran, eigene Klassen in Module auszulagern.
Dabei stelle ich mich aber zu doof an...
Problem:
Ich habe die Klasse "Xyz", die ich in das aktuelle Skript importiere.
In dieser Klasse wird auf ein Dictonairy "DICT" zugegriffen.
"DICT" ist aber im aktuellen Skript definiert. Also bekomme ich immer die Fehlermeldung:
"NameError: global name 'DICT' is not defined"
Wie ermögliche ich den Zugriff auf DICT?
Ich bin dankbar für jede Hilfe!
Basics: Aus importiertem Modul auf den lokalen Namensraum zu
Du übergibst einfach das Dictionary als Parameter beim Instanziieren der Klasse. Aber zeig mal etwas Quellcode, es hört sich so an, als wenn da einiges designtechnisch nicht so schön gelöst ist (globale Variablen, keine sinnvolle Aufteilung in Module).
-
- User
- Beiträge: 50
- Registriert: Donnerstag 29. November 2007, 21:04
- Wohnort: Berlin
- Kontaktdaten:
Diese Klasse wird importiert:
und hier importiere ich sie:
Code: Alles auswählen
# -*- coding: utf-8 -*-
import wx
class DlgOverview(wx.Dialog):
def __init__(self, *args, **kwds):
# begin wxGlade: DlgOverview.__init__
kwds["style"] = wx.DEFAULT_DIALOG_STYLE
wx.Dialog.__init__(self, *args, **kwds)
self.sizer_5_staticbox = wx.StaticBox(self, -1, u"Übersicht")
........
Code: Alles auswählen
if __name__=="__main__":
# -*- coding: utf-8 -*-
import wx
import DlgOverview
Ebay_DB = {"Art.Nr: 0001":[u"Artikelname.....",
"Pfad zum jpeg", "", 1.75, 6.75, 5.0, u"12. 07. 2007",
u"01. 01. 2008", u"Bla"]}
ItemID = "Art.Nr: 0001"
app = wx.PySimpleApp()
frame = DlgOverview(None, -1)
frame.Show()
app.MainLoop()
Entweder die Definition von `DICT` ebenfalls in das Modul mit der Klasse verschieben, oder den Instanzen der Klasse eine Referenz als Argument mit geben.
Code: Alles auswählen
class DlgOverview(wx.Dialog):
def __init__(self, the_dict, *args, **kwds):
self.a_name = the_dict
....
----
#erstellen
a_dict = {...}
frame = DlgOverview(a_dict, None, -1)
DocFischer, Grüße vom Tirschenreuther Ring zurück.