【Python初心者】class(クラス)をちゃんと理解してる?僕は全くわからなかったので徹底的に調べてみた。

「Python の class って何!?」

という、初心者Pythonエンジニア向けに、たびんちゅうプログラマーのカンが、Pythonのclassについて説明していきます。

なお、classのメソッド定義のselfに関しては勉強中なので、回答できません。

では早速解説していきます。

クラスとは

一言で言えば「型」です。

「型」については、車の例えで説明します。

クラスとインスタンス

車を毎回ゼロから設計するよりも、「設計書」を作った方が量産できます。

python でも、関数を使いまわすことは頻繁に行われるため、「型(クラス)」を作った方が、効率的で、かつ見た目が綺麗なコードができます。

そして、クラスから作られたオブジェクトを「インスタンス」と言います。

語句についてまとめると、次のようになります。

  • クラス:型(設計書)
  • インスタンス:クラスから生まれたオブジェクト
  • オブジェクト:全てのもの・こと

「オブジェクトってなに?」という方は、「 オブジェクトとインスタンスって何が違うの?という初心者プログラマー向けの図解」をご確認ください。

Pythonでのclassの機能と使用方法

classは、「定義」と「呼び出し」の機能があります。

【クラスの機能】

  • 定義:クラス名、メソッド名
  • 呼び出し:メソッド

「メソッド」とは、「クラス内にある関数」を指します。

classを実際に使用すると、次のようになります。


class クラス名: #クラスの定義
    def メソッド名(self): #メソッドの定義

# 例文
class Hello:
	def voice(self):
		print("Hello!")

	def shout(self):
		print("Woo!")

say = Hello()
say.voice()
say.shout()

# 結果
Hello!
Woo!

上記をまとめると、次のようになります。

  • クラス名:Hello
  • メソッド名:voice
  • メソッド:print(“Hello!)
  • インスタンス化:Hello()

クラス名とメソッド名を定義すれば、「クラス名.メソッド名()」で、自由にメソッドを使うことができるのです。

小規模な開発の場合は、「クラスなんて必要ないじゃん」と思うかもしれないですが、大規模な開発になると、関数を使いまわすことは頻繁に起こります。

その都度、関数を書くのは作業効率的にも、ソースコードの見た目的にもよろしくないので、クラスを使う習慣は慣れておきましょう。

selfって何?

「メソッド定義のselfって何?」という疑問に対してお答えしたいのですが、申し訳ございません、ただいま勉強中です。

ただ、下記2つはわかりました。

  • 実は、selfじゃなくてもいい
  • 必要

面白いことに、selfじゃなくても問題ないんです。

先ほどのソースコードに、selfではなく、aaaを代入しても、問題なく同じ結果が返ってきます。


class Hello:
	def voice(aaa):
		print("Hello!")

	def shout(aaa):
		print("Woo!")

say = Hello()
say.voice()
say.shout()

# 結果
Hello!
Woo!

ただ、慣習的にselfを使用するので、selfを使えばいいと思います。

また、selfがないと、エラーになります。

この2つだけ覚えておけば、まあ問題ないです。(無責任)

class(クラス)まとめ

classについてまとめると、次のようになります。

  • classは型を意味する
  • classは「作業効率」と「ソースコードの美しさ」という観点から必要
  • classには「定義」と「呼び出し」の機能がある
  • メソッド定義に、とりあえずselfは書いておけ

以上です。

selfに関しては、わかり次第付け足そうと思います。

Related