关于重载父类的__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回答

bobby

2021-07-07

这里其实应该这样理解,上面一种调用init的时候传入了name,这是说明父类实例化需要这个参数

下面这个没有传递name给父类,这是因为sem这个变量不是给父类用的,而是给当前实例的参数而已,说不用传递这个值给父类,否则父类会把sem当做name给消化掉,这是错误的行为

1
0

Python3高级核心技术97讲,高级进阶的必学课程

socket编程/多线程/多进程/线程池/asyncio并发编程/协程和异步IO

2121 学习 · 551 问题

查看课程