¿Cómo funcionan los constructores de clases derivadas en python?

Tengo la siguiente clase base:

class NeuralNetworkBase:
    def __init__(self, numberOfInputs, numberOfHiddenNeurons, numberOfOutputs):
        self.inputLayer = numpy.zeros(shape = (numberOfInputs))
        self.hiddenLayer = numpy.zeros(shape = (numberOfHiddenNeurons))
        self.outputLayer = numpy.zeros(shape = (numberOfOutputs))

        self.hiddenLayerWeights = numpy.zeros(shape = (numberOfInputs, numberOfHiddenNeurons))
        self.outputLayerWeights = numpy.zeros(shape = (numberOfHiddenNeurons, numberOfOutputs))

Ahora, tengo una clase derivada con el siguiente código:

class NeuralNetworkBackPropagation(NeuralNetworkBase):
    def __init__(self, numberOfInputs, numberOfHiddenNeurons, numberOfOutputs):
        self.outputLayerDeltas = numpy.zeros(shape = (numberOfOutputs))
        self.hiddenLayerDeltas = numpy.zeros(shape = (numberOfHiddenNeurons))

Pero cuando hago una instancia de NeuralNetworkBackPropagation, me gustaría que se llamara a ambos constructores. Es decir, no quiero anular el constructor de la clase base. ¿Python llama por defecto al constructor de la clase base cuando ejecuta el de la clase derivada? ¿Tengo que hacerlo implícitamente dentro del constructor de la clase derivada?

Respuestas a la pregunta(2)

Su respuesta a la pregunta