Diferentes maneiras de usar __init__ para PyQt4

Então ... Estou trabalhando para tentar migrar do Python básico para alguma programação de GUI, usando o PyQt4. Estou vendo alguns livros e tutoriais diferentes, e cada um deles parece ter uma maneira um pouco diferente de dar o pontapé inicial na definição da turma.

Um tutorial começa as aulas assim:

class Example(QtGui.QDialog):
    def __init__(self):
        super(Example, self).__init__()

Outro livro faz assim:

class Example(QtGui.QDialog):
    def __init__(self, parent=None):
        super(Example, self).__init__(parent)

E ainda outro faz assim:

class Example(QtGui.QDialog):
    def__init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)

Eu ainda estou tentando envolver minha mente em torno de classes e OOP esuper() e tudo ... estou correto em pensar que a última linha do terceiro exemplo realiza mais ou menos a mesma coisa que as chamadas usandosuper() nos anteriores, chamando explicitamente a classe base diretamente? Para exemplos relativamente simples como estes, ou seja, herança única, existe algum benefício real ou razão para usar um caminho em relação ao outro? Finalmente ... o segundo exemplo passaparent como um argumento parasuper() enquanto o primeiro não ... quaisquer suposições / explicações sobre o porquê / quando / onde isso seria apropriado?

questionAnswers(1)

yourAnswerToTheQuestion