Итак... Я работаю над переходом от базового Python к некоторому программированию с графическим интерфейсом, используя PyQt4. Я просматриваю пару разных книг и руководств, и в каждой из них, похоже, есть немного другой способ начать определение класса.
В одном учебнике классы начинаются вот так:
class Example(QtGui.QDialog):
def __init__(self):
super(Example, self).__init__()
Другая книга делает это так:
class Example(QtGui.QDialog):
def __init__(self, parent=None):
super(Example, self).__init__(parent)
И еще один делает это так:
class Example(QtGui.QDialog):
def__init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
Я все еще пытаюсь осмыслить классы, ООП, super()
и все такое... правильно ли я думаю, что последняя строка третьего примера выполняет более или менее то же самое, что и вызовы с использованием super()
в предыдущие, явно вызывая базовый класс напрямую? Для относительно простых примеров, таких как одиночное наследование, есть ли реальная выгода или причина использовать один способ по сравнению с другим? Наконец... во втором примере parent
передается в качестве аргумента для super()
, а в первом нет...любые догадки/объяснения, почему/когда/где это было бы уместно?