mem*_*nuk 7 python pyqt super pyqt4
所以......我正在尝试使用PyQt4从基本的Python转向一些GUI编程.我正在看几本不同的书籍和教程,他们每个人似乎都有一种稍微不同的方式来推动课程定义.
一个教程从这样的类开始:
class Example(QtGui.QDialog):
def __init__(self):
super(Example, self).__init__()
Run Code Online (Sandbox Code Playgroud)
另一本书是这样的:
class Example(QtGui.QDialog):
def __init__(self, parent=None):
super(Example, self).__init__(parent)
Run Code Online (Sandbox Code Playgroud)
而另一个是这样做的:
class Example(QtGui.QDialog):
def__init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
Run Code Online (Sandbox Code Playgroud)
我仍然在试图总结我的脑海围绕类和OOP和super()所有......我在想,在第三个例子中的最后一行完成或多或少同样的事情,使用呼叫纠正super()在前面的,通过明确直接调用基类?对于这些相对简单的例子,即单一继承,是否有任何真正的好处或理由使用单向与另一种方式?最后......第二个例子parent作为一个参数传递,super()而第一个例子没有...任何关于为什么/何时/哪里合适的猜测/解释?
第一个根本不支持将parent参数传递给它的基类.如果你知道你永远不需要parentarg,那很好,但这不太灵活.
由于此示例仅具有单继承,super(Example, self).__init__(parent)因此完全相同QtGui.QDialog.__init__(self, parent); 前者用于super获取selfcalles QtGui.QDialog方法的"版本" 而不是Example's,因此self自动包含,而后者直接调用函数QtGui.QDialog.__init__并显式传递self和parent参数.在单继承中,除了键入的数量之外,AFAIK没有区别,如果更改继承,则必须更改类名.在多重继承中,super半智能地解析方法.
实际上使用的第三个例子QWidget代替了QDialog,这有点奇怪; 大概是有效的,因为它QDialog是一个子类,QWidget并没有做任何有意义的事情__init__,但我不确定.
| 归档时间: |
|
| 查看次数: |
3630 次 |
| 最近记录: |