rubyのクラスメソッドとクラス変数ってなに?
メソッド名にselfを使うとそれはclassメソッドというものになるそうです。呼び出し側はUser.infoとなっており、「User」はクラス名です。クラス変数は@@ではじまるものです。
- インスタンス変数はインスタンスごとに値を保持していましたが
- クラス変数は異なるインスタンス間でも値を保持することが可能なようです。
tom, aya, bobの3つのインスタンスが生成されるごとにinitialize()メソッドが自動的に呼ばれます。すると@@countが1ずつ増えていきます。異なるインスタンス間でも値を保持するものですから結果的に@@countは増えていくことになります。
最後あたりでUser.infoとしてクラスメソッドを呼び出しています。
結果的には「2: インスタンスの数は3個です 」と表示されます。
自分がプログラムをいちからはじめたときはインスタンスというものがまずわかりませんでした。いまだにclassの利点がわからない程度の知識ですが、個人的にはpythonを最初にやったほうがいいと思ってしまいます。でもこれは人それぞれですので一概にpythonをおすわけにもいかずです。
コメント