16
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

klassってなんやねんってお話

Last updated at Posted at 2020-09-30

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と書いたりもします。

以上です

ソースの流れを見る限りうっすらとあるいは無意識に「きっとそういうことなんだろう」と思いながらもこうやって疑問に感じたことに興味をもって調べてみるのがスキルを磨く上ではとても大事なんだろうと信じてます。

参考文献

16
11
8

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?