继承线程类后, 调用线程的__init__()的疑问

继承线程类后, 调用线程的__init__()的疑问

http://img1.sycdn.imooc.com//climg/6115dc6c093d270108410392.jpg

threading.Thread.__init__(self)

这两种写法的效果是否一样, 如果效果不一样, 区别在哪

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕燕燕 2021-08-13 13:57:06

同学,你好!继承多线程类,重写__init__()方法必须要先继承父类的init方法,否则程序运行会报错,RuntimeError: thread.__init__() not called,没有调用线程类的init方法。这是多线程继承的特殊之处,重写父类的构造方法后,需要调用父类构造方法。祝:学习愉快!

  • 提问者 大可计划 #1
    super(DetailSpider, self).__init__()
    换成
    threading.Thread.__init__(self)
    都能爬取到相同的数据

    我的问题是, 这两个有什么区别

    2021-08-14 09:14:51
  • 好帮手慕燕燕 回复 提问者 大可计划 #2

    同学,你好!子类的init方法中,继承父类的init方法有两种写法,如下:

    1、使用super关键字,super(子类名称, self).__init__(参数)

    2、父类名称.__init__(self, 参数)

    super(DetailSpider, self).__init__()与threading.Thread.__init__(self)都是继承父类的init方法,只是写法不同,功能上没有区别。

    祝:学习愉快!

    2021-08-14 09:47:42
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师