Una forma es para llamar al constructor de A y pase self
como argumento, como lo siguiente:
class B(A):
def __init__(self):
A.__init__(self)
print "hello"
La ventaja de este estilo es que está muy claro. Llama al constructor de A. La desventaja es que no maneja la herencia en forma de diamante muy bien, ya que puede terminar llamando al constructor de la clase base compartida dos veces.
Otra forma es usar super(), como otros han mostrado. Para la herencia única, básicamente hace lo mismo que permitirte llamar al constructor del padre.
Sin embargo, super() es un poco más complicado bajo el capó y en ocasiones puede ser contradictorio en situaciones de herencia múltiple. En el lado positivo, super() se puede utilizar para manejar la herencia en forma de diamante. Si quieres saber los detalles de lo que hace super(), la mejor explicación que he encontrado sobre cómo funciona super() es here (aunque no estoy necesariamente respaldando las opiniones de ese artículo).
Posible duplicado de [Constructores principales de llamada en cadena en python] (http://stackoverflow.com/questions/904036/chain-calling-parent-constructors-in-python) –