我附上了幾個類定義的代碼列表。我的目標是創建一個帶有事件處理程序的類,可以在Timer耗盡時重複執行任務。在TimerClass中,我在__init__
類中定義了一個方法on_timed_event
。我在主函數a = TimerTest()
中安裝了一個TimerTest類,並且我發現它也執行了事件處理函數。類的定義和方法
問題1.這是一種在創建對象實例時自動執行函數的方法嗎?
問題2我想將ClassA.method1傳遞給ClassB。我在下面的main()
通過sm.add()
延遲類是否正確?是否有可能創建Delay類的實例並將其傳遞爲在同一行上即時傳遞類實例SimpleMath(X,Y)和add()方法的等價物? Lambda函數?
import System
from System.Timers import (Timer, ElapsedEventArgs)
class TimerTest(object):
def __init__ (self):
self.timer = Timer()
self.timer.Interval= 1000
self.timer.Enabled = True
def on_timed_event (source, event):
print 'event from TimerTest class'
print "The Elapsed event was raised at " , event.SignalTime
print '------------'
self.timer.Elapsed += on_timed_event
class Delay(object):
def __init__(self,class_method):
self.delay = Timer()
self.delay.Interval= 2000
self.method= class_method
def on_timed_delay_event (self,sender, event):
print 'from Delay Class event handler'
print "event has elapsed event was raised at " , event.SignalTime
print 'addition results',self.method
print '------------'
def start(self):
print 'Delay timer Start'
self.delay.Elapsed += self.on_timed_delay_event
self.delay.Enabled= True
def stop(self):
self.delay.Enabled= False
self.delay.Elapsed -= self.on_timed_delay_event
class SimpleMath(object):
def __init__(self,a,b):
self.a =a
self.b =b
def add (self):
return self.a + self.b
def main():
a = TimerTest()
sm= SimpleMath(10,12)
print sm.add()
t= Delay(sm.add())
t.start()
if __name__ == '__main__':
main()
我正在給我的問題添加更多的細節。類任務和請求被導入到包含MainForm類的模塊中。在MainForm中創建一個Request類的實例,該實例被傳遞給Tab類,該類使用它並將其傳遞給觸發事件時應執行任務的Task類。在下面的精簡列表中,self.myRequest.command1僅執行一次。我在self.params被分配執行後添加了一個打印,它打印None
。有沒有特別的方法我應該通過self.myRequest.command1(arg1, arg2, arg3)
?
class Task(object):
...
def execute(self, param)
self.params = param #method to be executed periodically
print 'display self.params', self.params #debugging message
class Request (object):
...
def command1(self, arg1, arg2, arg3)
class Tab (object):
__init__(self,tabControl, myRequest):
self.myRequest= myRequest
self.myTask = Task()
...
def send_task(self):
self.myTask.execute(self.myRequest.command1(arg1, arg2, arg3))
class MainForm(Form):
__init__(self):
...
self.myRequest= Request()
self.tab=Tab(self.tabControl, self.myRequest)
...
我以爲我明白你的答案,但我有一個方法傳遞給另一個問題。我在我的特殊問題上添加了更多信息。 – cjbust