Python入門 クラスの仕組みとサンプル

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

確認環境
・Python 3.7.0

目次

クラスとは

class クラス名 :
    フィールド
    def メソッド名()
}
  • クラスは、データ(フィールド)と処理(メソッド)を定義できます。
  • クラスは設計図や型枠のイメージです。
  • メソッドは、メソッド名の前にdefをつけます。
  • 以下は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行目は、引数の値をクラスのフィールドにセットしています。

クラスを利用する

クラスを利用する場合、クラスからオブジェクトを生成する場合と生成しない場合があります。

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

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

クラス名()を変数に代入する形でオブジェクト(インスタンス)を生成します。インスタンス化といいます。

上記の図はクラスからオブジェクト(インスタンス)を3つ生成したときのイメージです。
オブジェクトごとにデータを管理できます。
例えると、クラスは設計図、型枠でインスタンスは実体です。

コード

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

# 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行目は、メソッドを使用してインスタンスの値を表示しています。
構文は、変数.メソッド名です。

2.クラスからオブジェクト(インスタンス)を生成しない

クラスからオブジェクトを生成しないサンプルです。

# 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行目は、オブジェクトを生成していませんがColorクラスの変数を参照できます。
構文はクラス名.変数名です。
クラス変数と呼ばれます。

関連の記事

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

△上に戻る