Menu
Coddy logo textTech

selfパラメータ

CoddyのPythonジャーニー「Object Oriented Programming」セクションの一部 — レッスン 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パラメータは、メソッド定義において常に最初のパラメータでなければなりません。それは、どの特定のオブジェクトが使用されているかをメソッドに伝えます。

carオブジェクトを作成し、属性を追加します:

my_car = Car()
my_car.color = "Red"
my_car.model = "Sedan"

次に、メソッドを呼び出します:

my_car.honk()
my_car.describe()

出力:

Beep beep!
I am a Red Sedan

my_car.describe()を呼び出す際、selfに対して何も渡さないことに注意してください。Pythonは自動的にmy_carselfパラメータとして渡します。

舞台裏では次のようなことが行われています:

# こう書いたとき:
my_car.describe()

# Pythonは実際にはこのように動作します:
Car.describe(my_car)

selfパラメータにより、各オブジェクトは自身のデータにアクセスできます。selfがなければ、メソッドはどのオブジェクトの属性を使用すべきか判断できません。

重要なポイント:メソッドの定義では常に最初のパラメータとして self を含める必要がありますが、メソッドを呼び出す際にそれを渡す必要はありません。Python がこれを自動的に処理します。

challenge icon

チャレンジ

簡単

car.py 内の Car クラスを完成させてください。self パラメータを使用して、車の年式(year)、メーカー(make)、モデル(model)を以下の形式で出力する display_info という名前のメソッドを追加します:

"This car is a [year] [make] [model]"

  • car.py: display_info メソッドを追加する Car クラスの定義が含まれています。
  • driver.py: Car クラスをインポートして使用するメインの実行ファイルです。

driver.py ファイルは Car クラスをインポートし、インスタンスを作成して実装をテストします。ドライバーファイルから呼び出されたときに、メソッドが正しく動作することを確認してください。

チートシート

self パラメータは、メソッド内でのクラスのインスタンスを指し、現在のオブジェクトの属性にアクセスしたり変更したりすることを可能にします。

self は、メソッド定義において常に最初のパラメータである必要があります:

class Car:
    def honk(self):
        print("Beep beep!")
    
    def describe(self):
        print(f"I am a {self.color} {self.model}")

オブジェクトを作成し、属性を追加します:

my_car = Car()
my_car.color = "Red"
my_car.model = "Sedan"

メソッドを呼び出します(Pythonは自動的にオブジェクトを self として渡します):

my_car.honk()        # Beep beep!
my_car.describe()    # I am a Red Sedan

重要なポイント:メソッド定義では常に self を最初のパラメータとして含めますが、メソッドを呼び出すときには決して渡さないでください。

自分で試してみよう

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
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

Object Oriented Programmingのすべてのレッスン