stehe gerade furchtbar auf dem Schlauch (obwohl Dookie ja schon ein bißchen weitergeholfen hat). Das Problem ist Folgendes: Ich importiere zunächst ein paar Module:
Code: Alles auswählen
import sys, os
import wx
# import own modules from src
import src.DNA
import src.NCBIstrip
Dann steige ich ins GUI ein:
Code: Alles auswählen
class FindFrame(wx.Frame):
def __init__(self,parent,id,title):
wx.Frame.__init__(self,parent,id,title,wx.DefaultPosition,wx.DefaultSize,style=wx.DEFAULT_FRAME_STYLE)
# code, code, code ...
Später öffne ich dann einen file dialog und möchte den gelandenen string einem "DNA-Objekt" zuweisen:
Code: Alles auswählen
#innerhalb der Klasse
def GenomicOpen(self,event):
wildcard="stripped files (*.strip)|*.strip|"\
"NCBI files (*.html)|*.html|"\
"All files (*.*)|*.*"
file_dialog = wx.FileDialog(self,message="Open Genomic Sequence",defaultDir=os.getcwd(),defaultFile="",wildcard=wildcard,style=wx.OPEN|wx.CHANGE_DIR)
if file_dialog.ShowModal() == wx.ID_OK:
path = file_dialog.GetPaths()
infile = open(path[0])
DNAstring = infile.read()
inputDNA = src.DNA.__init__(DNAstring)
infile.close()
print inputDNA
file_dialog.Destroy()
Das Problem ist: Wie mache ich inputDNA zu einem DNA-Objekt? Wie rufe ich innerhalb von FindFrame Funktionen von DNA auf, bzw. wie wende ich sie auf DNA-Objekte an? Ich habe mich an multiple inheritance versucht, also "class FindFrame(wx.Frame,src.DNA.DNA):", aber dabei fliegt mein Program immer auf die Schna... . Auch ohne multiple inheritance (wie heißt das auf eigentlich auf Deutsch?) ist mir die Syntax nicht ganz klar.
Im Ursprungsskript läuft alles reibungslos und DNA.__init__ initialisiert, so wie es soll. Der fragliche Code sieht so aus:
Code: Alles auswählen
DNAstring = infile.read()
input_DNA = DNA(DNAstring)
input_DNA.name(fname) # ruft die Funktion name() innerhalb der DNA-Klasse auf.
#wie ginge das hier?
Traceback (most recent call last):
File "find.py", line 75, in GenomicOpen
inputDNA = DNA.__init__(DNAstring)
NameError: global name 'DNA' is not defined
Das kann ich natürlich mit src.DNA.DNA.__init__ anstell von DNA.__init__ umgehen, es löst aber das Problem mit den anderen Funktionen nicht.
Noch der Form halber: Ich verwende OS X 10.3.5 und pythonw 2.3.3.
Vielen Dank im Vorraus!
Christian
PS Die Einrückung scheitert in meinem Code hier, ist aber in meinem Skript in Ordnung.
PPS infile.read() macht auf bei großen Dateien keine Schwierigkeiten.