Diferentes formas de usar __init__ para PyQt4

Entonces ... estoy trabajando para intentar pasar de Python básico a alguna programación GUI, usando PyQt4. Estoy viendo un par de libros y tutoriales diferentes, y cada uno parece tener una forma ligeramente diferente de comenzar la definición de clase.

Un tutorial comienza las clases así:

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

Otro libro lo hace así:

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

Y otro más lo hace de esta manera:

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

Todavía estoy tratando de envolver mi mente en torno a las clases y OOP ysuper() y todo ... tengo razón al pensar que la última línea del tercer ejemplo logra más o menos lo mismo que las llamadas usandosuper() en los anteriores, llamando explícitamente a la clase base directamente? Para ejemplos relativamente simples como estos, es decir, herencia única, ¿hay algún beneficio real o razón para usar una forma en lugar de la otra? Finalmente ... pasa el segundo ejemplo.parent como un argumento parasuper() mientras que el primero no ... ¿alguna conjetura / explicación de por qué / cuándo / dónde sería apropiado?

Respuestas a la pregunta(1)

Su respuesta a la pregunta