什么是功能

这个问题在这里已经有了答案:

  • 用__init __()方法理解Python super()7个答案
  • 如何调用超级构造函数? 5个答案
  • “超级”在Python中做什么? 5个答案

  • __init__用于初始化类对象。 当你创建一个myThread的新对象时,它首先调用threading.Thread.__init__(self) ,然后定义两个属性str1和str2。

    请注意,您明确地调用threading.Thread ,它是myThread的基类。 最好通过super(myThread, cls).__init__(self)引用父__init__方法。

    Python文档

    super有两种典型的用例。 在具有单一继承的类层次结构中,super可以用于引用父类而不显式命名它们,从而使代码更易于维护 。 这种用法与其他编程语言中超级用法非常类似。

    第二个用例是在动态执行环境中支持协作式多重继承

    派生类调用基类init有几个原因。 一个原因是如果基类在__init__方法中做了一些特殊的事情。 你甚至可能没有意识到这一点。 另一个原因与OOP有关。 假设您有一个基类和两个从它继承的子类。

    class Car(object):
        def __init__(self, color):
            self.color = color
    
    class SportCar(car):
        def __init__(self, color, maxspeed):
            super(SportCar, cls).__init__(self, color)
            self.maxspeed = maxspeed
    
     class MiniCar(car):
        def __init__(self, color, seats):
            super(MiniCar, cls).__init__(self, color)
            self.seats = seats
    

    这只是为了展示一个示例,但您可以看到SportCar和MiniCar对象如何使用super(CURRENT_CLASS, cls).__init(self, PARAMS)调用Car类来在基类中运行初始化代码。 请注意,您还需要仅在一个地方维护代码,而不是在每个班级中重复该代码。


    这里发生的事情是,你从类threading.Thread继承你的类myThread

    因此, threading.Thread类中的所有函数都可以在您的继承类中使用,并且您正在修改类中的__init__函数。 所以不是运行父类的init方法,而是在你的类中运行__init__方法。

    所以你需要确保父类的__init__方法在执行修改的__init__函数之前也运行。 这就是使用threading.Thread.__init__(self)语句的原因。 它只是调用父类的__init__方法。

    链接地址: http://www.djcxy.com/p/30043.html

    上一篇: What is the function of

    下一篇: what does <class 'super'>class do in python?