Pythonのメソッド:クラスの中で定義する関数

クラスの基本を学んだ次のステップは「メソッド」です。メソッドを使うことで、クラスに「データ」だけでなく「処理」も持たせることができます。

メソッドとは

メソッドは、クラスの中で定義された関数のことです。

通常の関数との違いは「クラスの中に定義される」という点だけで、基本的な書き方は関数と同じです。

# 通常の関数
def greet():
    print("こんにちは")

# メソッド(クラスの中の関数)
class User:
    def greet(self):
        print("こんにちは")

メソッドの第1引数は必ず「self」

メソッドを定義するとき、第1引数には必ず self を指定するというルールがあります。

class Car:
    def drive(self):
        print("走っています")

self とは何か?

self は、メソッドを呼び出したインスタンス自身を指します。

class Car:
    def info(self):
        print(f"色: {self.color}")  # selfを使ってインスタンス変数にアクセス

my_car = Car()
my_car.color = "blue"
my_car.info()  # 色: blue

self.color と書くことで、そのインスタンスが持つ color 変数にアクセスできます。

インスタンスメソッドの呼び出し

インスタンスに対してメソッドを使うことを「インスタンスメソッド」と言います。

構文: インスタンス.メソッド名()

class Car:
    def drive(self):
        print("走っています")
    
    def stop(self):
        print("止まりました")

my_car = Car()

# メソッドの呼び出し
my_car.drive()  # 走っています
my_car.stop()   # 止まりました

selfを使ったインスタンス変数へのアクセス

self を使うことで、メソッド内からインスタンス変数を読み書きできます。

class Car:
    def set_color(self, color):
        self.color = color  # インスタンス変数に値をセット
    
    def show_info(self):
        print(f"この車の色は {self.color} です")

my_car = Car()
my_car.set_color("red")
my_car.show_info()  # この車の色は red です

selfが必要な理由

なぜ self が必要なのか疑問に思うかもしれません。

複数のインスタンスが存在するとき、self がないとどのインスタンスのデータを操作しているか分からなくなります。

class Car:
    def show_color(self):
        print(self.color)  # selfがあるから「このインスタンス」のcolorだと分かる

car1 = Car()
car1.color = "blue"

car2 = Car()
car2.color = "red"

car1.show_color()  # blue(car1のselfが渡される)
car2.show_color()  # red(car2のselfが渡される)

self があることで、それぞれのインスタンスが自分自身のデータを正しく扱えます。

今日の学びのポイント

  • メソッド = クラスの中で定義された関数
  • 第1引数は必ず self(ルール)
  • self = メソッドを呼び出したインスタンス自身
  • インスタンスメソッド = インスタンスに対して使うメソッド
  • 呼び出しは インスタンス.メソッド名()

メソッドを使いこなすことで、クラスはより強力なツールになります。次は、インスタンス生成時に自動で実行される特別なメソッド __init__ を学びます。


コメント