Python: クラス定義の基本や注意点

クラスはデータと処理をまとめるための仕組みです。 ある程度の規模のプログラムではクラスを利用した方が 効率的に開発ができます。

ここではPythonでクラスを定義する際の 基本的な事項や注意点を紹介します。

クラス名の先頭は大文字を推奨

クラスを定義する場合、 キーワード「class」の後にクラス名、コロン「:」を記述します。
一般的にクラス名の先頭は大文字が推奨されています。 例えばクラス名「person」ではなく「Person」のようにクラス名を付けます。

class Person:
	処理内容

処理内容部分はインデントすることでクラスの範囲を示します。

コンストラクタは__init__ (アンダーバー2つ)

コンストラクタはクラスのインスタンスを作成する際に、 最初に必ず実行されるメソッドです。

Pythonではコンストラクタを「__init__(アンダーバー2つ)」と記述します。 コンストラクタの第1引数は「self」です。インスタンス作成の際に実際に受け取る 引数を第2引数以下に記述します。

次のコードではクラス「Person」のコンストラクタを記述しています。

class Person:
	# コンストラクタ
	def __init__(self, name):
		self.name = name

# インスタンス作成	
p = Person("田中")

selfとは

Pythonでクラスを定義する際のポイントの1つが「self」です。 selfはインスタンスを表す「慣習的」な引数名です。

selfが無い場合、 インスタンを通して外部から操作することができません。 メソッドの場合は第1引数にselfを指定し、 データ属性の場合は「self.データ属性名」と記述します。

メソッドの第一引数はself

コンストラクタを含めて、 メソッドの第1引数には「self」を指定します。

次のコードでは、クラス「Person」のメソッド「getName()」を記述しています。

class Person:

	def getName(self):
		return self.name

データ属性はself.の後に変数名

データ属性は「self.変数名」のように、 「self.」の後に変数名を記述します。

次のコードでは、コンストラクタで受け取った引数「name」を データ属性「self.name」に代入しています。

class Person:
	# コンストラクタ
	def __init__(self, name):
		self.name = name

# インスタンス作成	
p = Person("田中")

まとめ

これまでの基本事項や注意点をまとめたのが下のコードです。 クラスの定義からインスタンス作成、 メソッドやデータ属性の利用までを記述しています。

class Person:

	# コンストラクタ
	def __init__(self, name):
		self.name = name
		
	def getName(self):
		return self.name

# インスタンス作成	
p = Person("田中")
print(p.getName())  # 田中

# nameを変更
p.name = "山田"
print(p.getName())  # 山田
Python