我对继承线程类有一些疑问。
class MyThread(threading.Thread):
def __init__(self, num):
threading.Thread.__init__(self)
self.num = num
def run(self):
print("Thread", self.num)
time.sleep(1)
为什么我不能仅覆盖run方法? threading的Python文档提到 ”“ Thread类代表在单独的控制线程中运行的活动。有两种方法指定活动:将可调用对象传递给构造函数,或通过覆盖子类中的run()方法。”
为什么上面的示例代码也会覆盖构造函数?
答案 0 :(得分:2)
构造函数被重写以将num
参数从创建MyThread
实例的位置传递到run
方法。
请注意,您不会直接调用run
方法,因此除非将它们存储在构造函数中,否则无法将任何参数传递给该方法。
如果您不需要传递参数,则只能覆盖run
方法。