为什么这不起作用?
class spin(threading.Thread):
def __init__(self):
super(spin,self).__init__()
self._stop = False
def run (self,var):
self.var=var
print self.var
def echo (self,var):
self.var=var
print self.var
if __name__ == '__main__':
s = spin()
s.start('hello')
但是这样做了?
s = spin()
s.echo('hello')
我猜它是因为启动顺序需要在init中定义?但不确定如何。有人要求提供错误代码:
s.start('hello')
TypeError: start() takes exactly 1 argument (2 given)
答案 0 :(得分:2)
s.start('hello')
不起作用的原因是,继承的Threadin.start()
方法不使用self
以外的参数。
调用s.echo('hello')
似乎确实有效,但它在主线程的上下文中调用该函数,而不是生成一个新线程。
修复代码的一种方法是向构造函数提供var
:
import threading
class Spin(threading.Thread):
def __init__(self,var):
super(Spin,self).__init__()
self.var = var
def run(self):
print self.var
if __name__ == '__main__':
s = Spin('hello')
s.start()
s.join()