Причина, по которой 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()