スーパークラスの呼び出し
単純な振る舞いはまったく同じなのだけど、多重継承とかする場合には
②の方法が良いそうだ。なんでかは分からないけど、そっちで覚えたほうが良いらしい。
>>> class OneMore(Behave): # ①委譲を用いる ... def repeat(self,N): Behave.repeat(self,N+1) ... >>> zealant = OneMore("Worker Bee") >>> zealant.repeat(3) Hello, Worker Bee Hello, Worker Bee Hello, Worker Bee Hello, Worker Bee >>> >>> class OneMore(Behave): # ②スーパークラスを用いる # どうでも良いからこっちをついかましょう。 ... def repeat(self,N): super(OneMore, self).repeat(N+1) ... >>> zealant = OneMore("Worker Bee") >>> zealant.repeat(3) Hello, Worker Bee Hello, Worker Bee Hello, Worker Bee Hello, Worker Bee >>> >>>
おまけ
①class X(object)
②class X
ちなみにこの二つは多重継承をする場合に結構な違いがあるらしい。
②の方は旧体系Pythonの互換性の為に残されていて、無根拠クラスと呼ばれる。旧クラスではsuperが使えない為、新しいPythonでは使用を推奨していないとの事。3.0だとどちらでもsuperの呼び出しはエラーにはならないみたいだけど。まぁいっか。