pythonやrubyで、ライブラリのソースコードとか眺めてるとちょいちょいでてくる、
klassというキーワード。
感覚的に「英語でこんな単語はないよな・・・」と思いながらも一昔前までスルーしてたのですが、最近またとあるrubyのライブラリの中身をハックじみたことしてたらまたでてきたので調べたのです。
classって名前がつけられないのでklass
何言ってるかわからないかもしれませんが、例えば
def inspect_class(class)
puts class.class
end
inspect_class('a')
というコードを書きたいとき。
これはシンタックスエラーになってしまいます。
なぜならclassというキーワードはrubyでは予約語としてすでに定義されているため。
そういうときに、
def inspect_class(klass)
puts klass.class
end
inspect_class('a')
こうかくとちゃんと通ります。
イメージ的に、
- クラス名の文字列を受け取る
- クラスそのものを受け取る
といったメソッドの引数名として書くことが多い印象です。
特にrubyのActiveRecordとかでは頻繁にクラス(モデル)を引数に渡したりします。(というかほとんどのフレームワークではそういうことを行いますね)
そんなこんなでruby業界ではklassっていうキーワードはよく出てくるんだろうなと。
で、それにインスパイアを受けてpythonとかでもklassっていうのを使ったりって感じなんですかね。
※こういったケースでは必ずklassとしなければならないというわけではなく、あくまで 「クラスを渡してるんだな」というのがわかりやすいよう に書いてるだけです。
人(プロジェクトとか)によっては、clazzというのもあるでしょうし、コメントでもいただきましたがpythonではclsと書いたりもします。
以上です
ソースの流れを見る限りうっすらとあるいは無意識に「きっとそういうことなんだろう」と思いながらもこうやって疑問に感じたことに興味をもって調べてみるのがスキルを磨く上ではとても大事なんだろうと信じてます。
参考文献