http://d.hatena.ne.jp/w_o/20081203#p1
Pythonで親クラスの__init__を呼ぶルールって酷いと思うのだけど、これPython信者たちはなんて言って褒めてるのかな…
* super(Type, self)というのが意味不明すぎ
* 自分のクラスを書かないといけない
* 忘れると死亡コンストラクタの書き方はD言語が一番良いのではないかと思う。
それは本当にPythonなのか??super(Type, self) なんて使ったこと無かったけど、確かにそういう書き方もできた。それでも、一般的ではない。多重継承できる言語で super とか判りにくくて仕方ない。
>>> class Foo(object): ... def __init__(self): ... print "Foo.__init__" ... >>> class Bar(Foo): ... def __init__(self): ... print "Bar.__init__" ... Foo.__init__(self) ... >>> Bar() Bar.__init__ Foo.__init__
Pythonの __init__ は、そのほかのメソッドと同じく、ただの関数。コンストラクタだからって何も特別なことはしない。構文上、__init__ はほかの関数に比べて何の特別扱いも受けない。
>>> def init(self): ... print "initializing ", str(type(self)) ... >>> class Foo(object): ... pass ... >>> f = Foo() >>> Foo.__init__ = init >>> f = Foo() initializing <class '__main__.Foo'> >>> f.__init__() initializing <class '__main__.Foo'> >>> g = f.__init__ >>> g() initializing <class '__main__.Foo'>