关于重载父类的__init__方法
来源:11-6 线程同步 - Semaphore 使用以及源码分析

村口胡大爷
2021-07-06
前面两节课里面,在重载父类__init__方法的时候是这样写的
lass GetDetailUrl(threading.Thread):
def __init__(self, name):
super( ).__init__(name=name)
这节课这里的是这样写的
class UrlProducer(threading.Thread):
def __init__(self, sem):
super().__init__()
self.sem = sem
想问下这两种有什么区别吗?以及不同的应用场景是什么?
写回答
1回答
-
这里其实应该这样理解,上面一种调用init的时候传入了name,这是说明父类实例化需要这个参数
下面这个没有传递name给父类,这是因为sem这个变量不是给父类用的,而是给当前实例的参数而已,说不用传递这个值给父类,否则父类会把sem当做name给消化掉,这是错误的行为
10
相似问题