このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【Python入門】メソッドの定義

メソッドの定義

 Pythonのオブジェクト指向プログラミングでは、クラス内に定義した関数を「メソッド」と呼び、オブジェクト固有の処理や振る舞いを実現します。メソッドは、定義時に第一引数として self を受け取ることで、呼び出された対象のオブジェクトにアクセスできる仕組みとなっています。ここでは、メソッドの基本的な定義方法や、その呼び出しと引数の対応関係について、具体例と表を交えて解説します。

プログラムのダウンロード

 「ダウンロード」から、JupyterLab で実行できるサンプルプログラムがダウンロードできます。ファイルは、ESET Endpoint Securityでウイルスチェックをしておりますが、ダウンロードとプログラムの実行は自己責任でお願いいたします。

1.メソッド定義の基本

1.1. メソッドの定義方法

 クラスの内部では、通常の関数と同様に def 文を用いてメソッドを定義します。基本的な構文は以下の通りです。

class クラス名:
    def メソッド名(self, 引数1, 引数2, ...):
        文...

 ここで、self はメソッドが呼び出されたオブジェクト自身を参照するための予約引数です。メソッドを呼び出す際には、self に対応する引数を明示的に指定する必要はありません。

1.2. メソッド定義と呼び出しにおける引数の対応関係

メソッドの定義と呼び出しの際の引数の対応は、以下の表のようになります。

定義側呼び出し側
def メソッド名(self, 引数A, 引数B, ...):オブジェクト.メソッド名(引数A, 引数B, ...)

 このように、呼び出し時には self は自動的に対象のオブジェクトに紐付けられるため、ユーザは残りの引数のみを指定します。

2.メソッド定義の実践例

2.1. クラス "GroceryItem" の定義

 ここでは、食品の情報を扱うクラスとして GroceryItem を定義します。各オブジェクトは、商品名と価格というデータ属性を持ち、これを表示するためのメソッド display を実装します。

class GroceryItem:
    def __init__(self, name, price):
        # オブジェクト生成時にnameとpriceの値を初期化
        self.name = name    # 商品名を格納するデータ属性
        self.price = price  # 価格を格納するデータ属性

    def display(self):
        # オブジェクトのデータ属性を表示するメソッド
        print(self.name, self.price)

 この例では、__init__ メソッドで各オブジェクトの nameprice を初期化し、display メソッドでその内容を出力します。self を用いることで、各インスタンスが持つ固有の情報にアクセス可能です。

2.2. オブジェクトの生成とメソッド呼び出し

 次に、GroceryItem クラスから2つのオブジェクトを生成し、それぞれのデータ属性を display メソッドで表示します。ここでは、1つ目のオブジェクトは商品名 milk、価格 150、2つ目のオブジェクトは商品名 egg、価格 200 として初期化します。

# GroceryItemクラスからオブジェクトを生成し、変数 item1 に代入
item1 = GroceryItem('milk', 150)
# item1 の display メソッドを呼び出して、属性を表示
item1.display()  # 出力例: milk 150

# 同じく、別のオブジェクトを生成し、変数 item2 に代入
item2 = GroceryItem('egg', 200)
# item2 の display メソッドを呼び出して、属性を表示
item2.display()  # 出力例: egg 200

実行結果

milk 150
egg 200

このプログラムの流れは以下の通りです。

  • オブジェクト生成
    GroceryItem('milk', 150) によって、item1 オブジェクトの nameprice がそれぞれ 'milk'150 に初期化されます。
    ・同様に、GroceryItem('egg', 200)item2 オブジェクトが生成され、属性が初期化されます。
  • メソッド呼び出し
    item1.display() および item2.display() により、各オブジェクトの display メソッドが呼ばれ、内部に保持されたデータ属性の値が表示されます。

まとめ

 ここでは、クラス内でメソッドを定義する基本的な方法と、その定義と呼び出しにおける引数の対応関係について解説しました。

  • クラス内で def 文を使い、self を第一引数に取るメソッドを定義する。
  • 呼び出し時は、対象オブジェクトを指定し、self は自動的に紐付けられる。
  • 実践例として、GroceryItem クラスを定義し、商品名と価格を表示する display メソッドを実装し、2つのオブジェクトのデータ属性を確認した。

 これらの基本概念を理解することで、より複雑な処理や振る舞いをクラスに持たせるための基盤が築かれ、拡張性の高いプログラム開発が可能となります。