我附上了几个类定义的一些代码列表。我的目标是创建一个带有事件处理程序的类,该事件处理程序可以在 Timer 过去时重复任务。在 TimerClass 中,我on_timed_event
在类中定义了一个方法__init__
。我在主函数中实例化了一个 TimerTest 类,a = TimerTest()
我发现这也执行了事件处理程序。
问题 1. 这是一种在创建对象实例时自动执行函数的方法吗?
问题 2. 我想将 ClassA.method1 传递给 ClassB。我在下面main ()
传递sm.add()
延迟课程的方式是否正确?是否可以在一行中即时创建延迟类的实例并将其传递给类实例 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()
我正在为我的问题添加更多细节。类 Task 和 Request 被导入到包含 MainForm 类的模块中。在 MainForm 中,我创建了一个 Request 类的实例,该实例被传递给使用它的 Tab 类,并将其传递给 Task 类,该类应该在触发事件时执行任务。在下面的精简列表中,self.myRequest.command1 仅被执行一次。在执行内部分配 self.params 并打印后,我添加了一个 print 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)
...