読者です 読者をやめる 読者になる 読者になる

methaneのブログ

このブログに乗せているサンプルコードはすべてNYSLです。

委譲があれば継承がいらない?

Python

引き続き、Pythonistaによる http://d.hatena.ne.jp/w_o/20081204#p2 への反論

で、Rubyはmoduleを使って委譲ができるので、クラスの継承が必要無いのであまり関係無い。

意味が判らなかったんだけど、http://synth.jp/pg/2007/04/ruby_10.html のことかな。

Pythonでこう書くのとどう違うんだろう?

>>> class Foo(object):
...    def __init__(self):
...       pass
...    def foo(self):
...       pass
...
>>> class Bar(object):
...    def __init__(self):
...       self._foo = Foo()
...       self.foo = self._foo.foo
...
>>> b = Bar()
>>> b.foo()

とりあえず、実際にPythonを使っていて、 object 以外から継承することって少ないんだけど、本当にRubyでは継承がめったに使われていないんだろうか?

class を超特別扱いするのがデフォの静的型付け言語に比べたら、classもただのオブジェクトという動的型付け言語でコンストラクタに限らず明示的にクラスを指定しないといけないことが多いのは仕方ないんじゃないだろうか?