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
と書いたりもします。
以上です
ソースの流れを見る限りうっすらとあるいは無意識に「きっとそういうことなんだろう」と思いながらもこうやって疑問に感じたことに興味をもって調べてみるのがスキルを磨く上ではとても大事なんだろうと信じてます。
参考文献