Python クラスの仕組みと使い方のサンプル

Pythonのクラスの仕組みと使い方のサンプルです。

確認環境
・Python 3.7.0

目次

クラスとは

class クラス名 :
    フィールド
    def メソッド名()
}
  • クラスは、データ(フィールド)と処理(メソッド)を定義できます。
  • クラスからオブジェクト(インスタンス)を任意の数分、生成できます。
    その場合、オブジェクトごとにデータを保持できます。
    クラスは定義、設計図、型枠のイメージで、オブジェクトは実体です。
  • メソッドは、メソッド名の前にdefをつけます。
  • クラスのメソッドの前の行に@classmethodを追加すると、オブジェクトを生成しないでそのメソッドを使用できます。クラスメソッドと呼びます。
  • クラス名は最初の文字を大文字にします。Pascal記法といいます。
  • 以下はPythonの公式ドキュメントの「9. クラス」のリンクです。
    https://docs.python.org/ja/3/tutorial/classes.html

クラスのサンプル

3~11行目までがColorというクラスです。

# coding: utf-8

class Color:
	moji = "色は"
	name = ""

	def getName(self):
		return self.moji + self.name

	def setName(self,a):
		self.name = a

3行目は、クラス名です。最初を大文字にします。
4,5行目は、クラスの変数です。フィールドとも呼びます。
7,10行目は、クラスのメソッドです。最初にdefを付けます。
メソッドの引数は、最初にselfを付けます。
11行目は、引数の値をクラスのフィールドにセットしています。

クラスからオブジェクト(インスタンス)を生成する

class クラス名 :  //クラスを定義
変数 = クラス名()    //クラスからインスタンスを生成

クラスからオブジェクト(インスタンス)を生成できます。
例えると、クラスは定義、設計図、型枠でインスタンスは実体です。
インスタンスを生成するのでインスタンス化ともいいます。

クラスからオブジェクト(インスタンス)を生成するサンプル

クラスからオブジェクト(インスタンス)を生成するサンプルです。

# coding: utf-8

class Color:
	moji = "色は"
	name = ""

	def getName(self):
		return self.moji + self.name

	def setName(self,a):
		self.name = a

c1 = Color()
c2 = Color()
c3 = Color()

c1.setName("赤")
c2.setName("黄")
c3.setName("青")

print(c1.getName()) # 色は赤
print(c2.getName()) # 色は黄
print(c3.getName()) # 色は青

3~11行目は、クラスです。
13~15行目は、Colorクラスのインスタンスを3つ生成しています。
c1,c2,c3は変数です。

17~19行目は、メソッドを使用してインスタンスに値をセットしています。
ポイントは、インスタンスごとに保持するデータが異なる点です。
21~23行目は、メソッドを使用してインスタンスの値を表示しています。
構文は、変数.メソッド名です。

クラスメソッドのサンプル

クラスメソッドのサンプルです。
クラスメソッドとはインスタンス化しなくても使用できるメソッドのことです。
メソッドには@classmethodを追加します。

# coding: utf-8

class Color:
	cnt = "123"

	@classmethod
	def getName(self):
		return "456"

print(Color.getName()) # 456

c1 = Color()
c1.cnt = "999"
print(c1.cnt) # 999

print(Color.cnt) # 123

3~8行目は、Colorというクラスです。
4行目は、変数です。
6行目は、@classmethodがあるので、7行目はクラスメソッドになります。
10行目は、newでオブジェクトを生成していませんがColorクラスのメソッドを実行できます。
構文はクラス名.変数名です。

12~14行目は比較のためにインスンスを生成し値を表示しています。
13行目は、インスタンスに値をセットし14行目でその値を表示しています。

16行目は、newでオブジェクトを生成していませんがColorクラスの変数を参照できます。
構文はクラス名.変数名です。
クラス変数と呼ばれます。

関連の記事

Python 関数のサンプル
Python ローカル変数とグローバル変数

△上に戻る