Python の self キーワード
このチュートリアルでは、Python における self
キーワードの目的と使い方を説明します。オブジェクト指向プログラミングでは、クラスがあり、各クラスは様々な属性やメソッドを持っています。オブジェクトやクラスのインスタンスを作成する際には、インスタンスの属性を初期化するためにコンストラクタ(Python では __init__()
メソッド)が呼ばれます。
クラスのインスタンスを作成する際には、インスタンスの属性を引数や他の変数と区別したり、指定したりする必要があります。そこで、インスタンスの属性に値を渡しているのであって、ローカル変数や同名の引数に値を渡しているのではないことを指定するために、self
キーワードが必要になります。
例えば、car
クラスの color
属性を初期化するために __init__()
メソッドに引数 color
を渡すと、インスタンスの color
属性を self.color
と指定します。
同様に、car
クラスの self.start()
メソッドのように self
キーワードを使ってクラスのインスタンスメソッドを呼び出すこともできます。つまり、self
キーワードを使うことで、ユーザはクラスのインスタンスの属性やメソッドを指定したり、アクセスしたりすることができるということです。
Python における self
キーワードの使い方とサンプルコード
ここで、self
キーワードが Python でどのようにしてインスタンスのメソッドや属性を指定するのか、サンプルコードを見てみましょう。
以下の最初の例では、self
キーワードが __init__()
メソッドでどのようにしてインスタンスの属性を初期化するのかを示しています。初期化や値の代入の前に変数を宣言したり作成したりする必要はないので、以下のようにしてインスタンスの属性を初期化することができます。
class car:
def __init__(self, model, color):
self.model = model
self.color = color
mycar = car("model XYZ", "red")
print(mycar.model)
print(mycar.color)
出力:
model XYZ
red
上で見たように、__init__()
メソッドはクラスのインスタンスを作成する際に自動的に呼び出され、そのインスタンスの属性が初期化されます。self
はインスタンスのメソッドや属性にアクセスするためのメソッドのパラメータである必要があります。
以下の例では、self
キーワードを使って Python の他のクラスメソッド内でインスタンスやクラスメソッドを呼び出す方法を示します。
class car:
def __init__(self, model, color):
self.model = model
self.color = color
self.start()
def start(self):
print(self.model + ", has started!")
mycar = car("model XYZ", "red")
出力:
model XYZ, has started!
上の例と同様に、self
キーワードを使ってクラスメソッドを呼び出し、クラスのインスタンスを self
パラメータとして渡すことで、任意のクラスメソッドの属性にアクセスすることができます。