使用python“super()”的目的是什么,而不是在继承内部使用python“super()”?

2024-04-26 18:54:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Youtube的教程中找到了这个简单的程序,它将QtSide模块与python一起使用。它的基本功能是将QLineEdit连接到QTextBrowser。如下所示,整个程序由单个类处理。我有super()函数的基本概念,它用于多重继承。所以在这里,我不明白super(Form, self).__init__(parent)语句的作用。我试着运行同一个程序后,评论的语句产生了下面的错误消息。在

错误:

Traceback (most recent call last):
  File "/home/dazz/Projects/PycharmProjects/FirstTutorial/a2_gui.py", line 35, in <module>
    form = Form()
  File "/home/dazz/Projects/PycharmProjects/FirstTutorial/a2_gui.py", line 17, in __init__
    self.setLayout(layout)
RuntimeError: '__init__' method of object's base class (Form) not called.

程序代码:

^{pr2}$

这里,super()有什么用? 我发现了一个question,可能与此有关。但我不清楚。在


Tags: self程序forma2homeinit错误gui
2条回答

super()用于is inheritance,multiple或其他,以调用可能已在当前类中重写的方法。在

这里,super()用于调用为QDialog定义的原始__init__方法或该方法的父类。不调用原始方法可能会产生后果,因为原始方法确实有效,您不想在自己的__init__方法中进行复制。在

super()使多重继承更容易处理,也更灵活,但对于多重继承,它不仅仅是而是。在

基本上,super()用于继承,如您所知。正如Martjin所提到的,当你评论掉你的案例时出现的“结果”是,有一个初始化要求已经在'QDialog'类中实现了。在

因此,在这个子类中需要做的就是调用父类的init。在

superinit的stackoverflow中已经有一篇好文章了。在

super and init

相关问题 更多 >