Różne sposoby używania __init__ dla PyQt4
Więc ... Pracuję nad próbą przejścia od podstawowego Pythona do jakiegoś programowania GUI, używając PyQt4. Patrzę na kilka różnych książek i samouczków, a każdy z nich wydaje się mieć nieco inny sposób na rozpoczęcie definicji klasy.
Jeden tutorial zaczyna się od takich klas:
class Example(QtGui.QDialog):
def __init__(self):
super(Example, self).__init__()
Inna książka to lubi:
class Example(QtGui.QDialog):
def __init__(self, parent=None):
super(Example, self).__init__(parent)
A jeszcze inny robi to w ten sposób:
class Example(QtGui.QDialog):
def__init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
Nadal próbuję zawinąć mój umysł wokół klas i OOP isuper()
i wszystko ... czy mam rację, myśląc, że ostatni wiersz trzeciego przykładu wykonuje mniej więcej to samo, co połączeniasuper()
w poprzednich, jawnie wywołując klasę bazową bezpośrednio? Czy dla względnie prostych przykładów, takich jak pojedyncze dziedziczenie, istnieje jakaś rzeczywista korzyść lub powód, aby użyć jednego sposobu w stosunku do drugiego? Wreszcie ... drugi przykład mijaparent
jako argument dosuper()
podczas gdy pierwszy nie ... zgaduje / wyjaśnia, dlaczego / kiedy / gdzie byłoby to właściwe?