オブジェクト指向プログラミングの"メソッド"についての書きもの
深層学習からご機嫌よう。新人はてなブロガーのはとです。今日も元気にオブジェクト指向してますか?オブジェクト指向プログラミングをしているときに必ず出会うメソッド(またはメンバ関数)について、自分なりの理解をまとめようと思いました。しかしまだまとまり切っていないので、今回は予告編のような感じです。ふわっと概要をまとめたいと思います。
関数とメソッドの違いがわからない。そういう方は割といるんじゃないかなと思います。しかし、オブジェクト指向の基本的なイメージを身につけると、その違いはなんとなく理解できるのではないでしょうか。大胆にも言い切ると、
オブジェクトを名詞、メソッドを動詞として捉えてみましょう。
なんのこっちゃと思いますよね。なので簡単な例を見てみます。Pythonのリストを並び替える、sorted関数とsortメソッドを比べてみましょう。それぞれListに対して次のように使います。
- sorted関数 → sorted(List)
- sortメソッド → List.sort()
比べてみると、sorted関数はオブジェクト(今でいうList)に手を加え(List was sorted)、一方でsortメソッドはオブジェクトがソートする(英語でいうS + Vの形をしている)、そのように見えてきませんか?
オブジェクト指向プログラミングの基本的なイメージは、「オブジェクト自身が仕事をする」だと思います。ちょうど上の例だと、List自身が並べ替えを行なっていますね。
詳しい話は省きましたが、メソッドを中心にした(?)、オブジェクト指向プログラミングのふわっとした話は以上になります。個人的な理解であるため、間違っていたり不適切な箇所があれば教えていただきたいです。現時点ではまだ漠然としていていますが、うまくまとめられたら「ちゃんとした版」を記事としてまとめようと思っています。