コメントやトラックバックで指摘されたとおり、下記の考察は完全に誤りです。後日 Python3 の super について記事を書きます
http://d.hatena.ne.jp/w_o/20081205#p2
うーん…↓このぐらいに書けないものかな…
class Base: def __init__(self): super().__init__() print ('Base') class A(Base): def __init__(self): super().__init__() print ('A') class B(Base): def __init__(self): super().__init__() print ('B') class C(B,A): def __init__(self): super().__init__() print ('C') b = C()
super は self の mro から ひとつ手前の class を取り出す関数だから、 self と Type を知らないといけない。この二つを引数にとるのが自然。普通の関数の仕組みのままでできる。
self と Type を省略できるようにしようとすると、通常の def とは違う、class 構文内でしか使えないメソッド定義専用の構文が必要になるし、superだけじゃなくてselfも用意しないといけない。class周りの構文がもう一セットできる訳だ。
self や super の引数が省略できるメリットと、同じ事をする構文が二セットある*1デメリットを天秤にかけたとき、新たな構文の採用をしないのが Python のやり方。
そもそも、普通に考えたら必要な self と Type を、暗黙に解決して省略しようという発想自体が Pythonic じゃない。暗黙にいろいろやってくれるのが好きなら Perl を使えと。
*1:これぞまさしく「やり方がひとつだけあるのがいいね」に反する