У меня очень простой графический интерфейс, который принимает два параметра и затем вызывает три других класса, чьи имена - DigitalFilter (), BeatByBeatVariables () и GetSummaryOfWholeTest (). Я впервые пишу классы, и мне нужна помощь с синтаксисом.
В частности, вы можете помочь мне с наследованием? Я хочу, чтобы класс GUI MainWindow (wx.Frame) вызывался при запуске приложения. Затем, когда пользователь нажимает на self.button в графическом интерфейсе, я хочу, чтобы приложение сначала запустило myFilter = DigitalFilter (TestID, FilterTimePeriod), затем второй запуск myBeatByBeat = BeatByBeatVariables (arg1, arg2) и, наконец, третий запуск myTestSummaryW = GetSummary Арга, ARGB)
Обратите внимание, что myBeatByBeat не может начать работать, пока не завершится создание myFilter, потому что создание экземпляра myFilter создает файлы csv, которые необходимы в качестве входных данных для myBeatByBeat. Аналогично, myTest Summary не может начать выполняться, пока не завершится создание myBeatByBeat, поскольку создание экземпляра myBeatByBeat создает файлы csv, которые необходимы в качестве входных данных для myTestSummary.
Может ли кто-нибудь показать мне правильный синтаксис для написания / создания экземпляров этих классов с соответствующим наследованием, чтобы работа каждого класса выполнялась в последовательности, которая учитывает их отношения ввода / вывода?
Я предполагаю, что здесь должно использоваться наследование, но я не знаю, что должно наследоваться от чего. Я также не знаю, не вижу ли я другие концепции, необходимые для придания коду необходимых взаимосвязей.
Вот краткий обзор соответствующего кода:
class DigitalFilter():
def __init__(self,TestID,FilterTimePeriod):
# All the code for the digital filter goes here.
# I am omitting this class' code for simplicity.
class BeatByBeatVariables():
def __init__(self,arg1,arg2):
# I am omitting this class' code for simplicity
class GetSummaryOfWholeTest():
def __init__(self,argA,ArgB):
# This class' code is omitted for simplicity
class MainWindow(wx.Frame):
def __init__(self, parent,id,title):
wx.Frame.__init__(self,parent,wx.ID_ANY,title, size = (500,500), style = wx.DEFAULT_FRAME_STYLE | wx.NO_FULL_REPAINT_ON_RESIZE)
# Create self.editname and self.edithear in code that I am omitting for simplicity
self.button =wx.Button(self, label="Click here to filter the data", pos=(200, 125))
self.Bind(wx.EVT_BUTTON, self.OnClick,self.button)
def OnClick(self,event):
FilterTimePeriod = self.editname.GetValue()
TestID = self.edithear.GetValue()
myFilter=DigitalFilter(TestID,FilterTimePeriod)
myBeatByBeat = BeatByBeatVariables(arg1,arg2)
myTestSummary = GetSummaryOfWholeTest(argA,argB)
app = wx.PySimpleApp()
frame = MainWindow(None,-1,"Filtering Software. Version 1.0")
app.MainLoop()
Примечание: я использую Python 2.6, потому что я также использую numpy и sciepy