Python 3.x 超级在这种情况下对我来说毫无意义
这对我来说毫无意义。我读过super()是如何工作的,也许我只是不太擅长掌握它。这似乎是一个非常多余的电话。为什么要对同一个对象调用两次init?在OOP中,Python 3.x 超级在这种情况下对我来说毫无意义,python-3.x,Python 3.x,这对我来说毫无意义。我读过super()是如何工作的,也许我只是不太擅长掌握它。这似乎是一个非常多余的电话。为什么要对同一个对象调用两次init?在OOP中,super()对于多重继承非常有用。它允许您访问超类中的方法和属性,这些方法和属性将在子/子类中使用,这节省了大量的时间和精力 第二个init调用用于从基类/子类访问超类,在基类/子类中传递超类所需的参数;这样,在实例化基类/子类时,只传入其init所需的参数,而不传入超类的init。这方面的一个很好的例子是本文中的实现 此外,您可以只编写
super()
对于多重继承非常有用。它允许您访问超类中的方法和属性,这些方法和属性将在子/子类中使用,这节省了大量的时间和精力
第二个init
调用用于从基类/子类访问超类,在基类/子类中传递超类所需的参数;这样,在实例化基类/子类时,只传入其init
所需的参数,而不传入超类的init
。这方面的一个很好的例子是本文中的实现
此外,您可以只编写
super()。\uuuu init\uuuu()
,而不显式引用基类。如果您将此代码翻译成英语,它会说“一个SimpleRoundedCorners
是一种QWidget
,要初始化它,你需要做初始化QWidget
所需的同样的事情,还需要调用它的initUI
方法。“这里没有被调用两次的\uuuu init\uuu
方法;有两个\uuuu init\uuuu
方法,其中一个调用另一个。@kaya3一个不错@这也是一个很好的解释。我不是那样想的!非常感谢。在重新阅读super()定义以及您的解释和链接后,它完全有意义。
class SimpleRoundedCorners(QWidget):
def __init__(self):
super(SimpleRoundedCorners, self).__init__()
self.initUI()