class MLP(chainer.Chain):

def __init__(self, n_units, n_out):
    super(MLP, self).__init__()
    with self.init_scope():
        self.l1 = L.Linear(None, n_units)  
        self.l2 = L.Linear(None, n_units)  
        self.l3 = L.Linear(None, n_out)    

def __call__(self, x):
    h1 = F.relu(self.l1(x))
    h2 = F.relu(self.l2(h1))
    return self.l3(h2)

chainerでモデルを作成している上記コードでsuper(MLP, self).__init__の意味がわかりません。super()はサブクラスからスーパークラスを参照して、スーパークラスを利用するという認識だったのですが、ここではsuperがサブクラスMLPのなかでMLPを参照しています。どうしてでしょうか。また、super(MLP, self).__init__with self.init_scope()の意味も合わせて教えていただきたいです。