selfパラメータ
CoddyのPythonジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 4/64。
selfパラメーターは、メソッド内でクラスのインスタンスを参照します。現在のオブジェクトの属性にアクセスして変更できます。
こちらは、self を使用するメソッドを持つクラスの例です:
class Car:
def honk(self):
print("Beep beep!")
def describe(self):
print(f"I am a {self.color} {self.model}")selfパラメーターは、メソッド定義で必ず最初のパラメーターにする必要があります。これにより、メソッドにどのオブジェクトが使用されているかが伝わります。
車オブジェクトを作成して、属性を追加します。
my_car = Car()
my_car.color = "Red"
my_car.model = "Sedan"それでは、メソッドを呼び出します。
my_car.honk()
my_car.describe()出力:
Beep beep!
I am a Red Sedanmy_car.describe()を呼び出すとき、selfには何も渡していないことに注目してください。Pythonは自動的にmy_carをselfパラメーターとして渡します。
裏側では次のようなことが起きています:
# 次のように書くと:
my_car.describe()
# Python は実際には次のように処理します:
Car.describe(my_car)self パラメーターを使うと、各オブジェクトが自身のデータにアクセスできます。self がなければ、メソッドはどのオブジェクトの属性を使えばよいのか分かりません。
重要なポイント: メソッドを定義するときは、常に self を最初のパラメーターとして含めますが、メソッドを呼び出すときに self を渡してはいけません。これは Python が自動的に処理します。
チャレンジ
簡単Carクラスに、selfパラメーターを使って車の年式、メーカー、モデルを次の形式で出力するdisplay_infoというメソッドを追加し、car.pyを完成させてください。
"This car is a [year] [make] [model]"。
car.py:display_infoメソッドを追加するCarクラスの定義が含まれていますdriver.py:Carクラスをインポートして使用するメイン実行ファイルです
driver.pyファイルは、あなたのCarクラスをインポートし、実装をテストするためにインスタンスを作成します。ドライバーファイルから呼び出したときに、メソッドが正しく動作することを確認してください。
自分で試してみよう
from car import Car
# コードをテストする
my_car = Car()
my_car.year = 2020
my_car.make = "Toyota"
my_car.model = "Corolla"
my_car.display_info() # 次のように出力されるはずです: This car is a 2020 Toyota Corollaこのレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
オブジェクト指向プログラミングのすべてのレッスン
自分で練習してみよう: Pythonオンラインコンパイラ