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()) # 山田