擅长:python、mysql、java
<p>由于问题与子类<code>stackless.tasklet</code>有关,因此可以将<code>MyTasklet</code>改为可调用的<code>object</code>,如下所示:</p>
<pre><code>import stackless
class MyTasklet(object):
def __init__(self, func, msg):
self.func = func
self.msg = msg
def __call__(self):
t = stackless.tasklet()
t.bind(self.func)
t.setup(self.msg)
t.run()
def foo(msg):
print msg
msg = 'hello'
MyTasklet(foo, msg)()
</code></pre>
<p>编辑:或者您可以重写<code>__new__</code>,将正确的参数传递给<code>stackless.tasklet.__new__</code>:</p>
<pre><code>import stackless
class MyTasklet(stackless.tasklet):
def __new__(cls, func, msg):
return stackless.tasklet.__new__(MyTasklet, func)
def __init__(self, func, msg):
pass
def foo():
pass
msg = 'hello'
MyTasklet(foo, msg)()
</code></pre>