我在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,可能与此有关。但我不清楚。在
super()
用于is inheritance,multiple或其他,以调用可能已在当前类中重写的方法。在这里,
super()
用于调用为QDialog
定义的原始__init__
方法或该方法的父类。不调用原始方法可能会产生后果,因为原始方法确实有效,您不想在自己的__init__
方法中进行复制。在super()
使多重继承更容易处理,也更灵活,但对于多重继承,它不仅仅是而是。在基本上,super()用于继承,如您所知。正如Martjin所提到的,当你评论掉你的案例时出现的“结果”是,有一个初始化要求已经在'QDialog'类中实现了。在
因此,在这个子类中需要做的就是调用父类的init。在
在
super
和init
的stackoverflow中已经有一篇好文章了。在super and init
相关问题 更多 >
编程相关推荐