Pythonで新しく定義された関数をメソッドの引数,パラメータとして渡す

スポンサーリンク

Pythonで新しく定義された関数をメソッドの引数,パラメータとして渡してみます。

Pythonの関数は、オブジェクトであり、変数に代入したり、他の関数に渡すことが可能であり、新しく作成された関数をメソッドのパラメータとして渡すこともできます。

■Python

Google Colaboratory(Google Colab),2023年3月18日時点ではPython 3.9.16が用いられる。

■新しく定義された関数をメソッドの引数,パラメータとして渡す

では、早速新しく定義された関数をメソッドの引数,パラメータとして渡す場合のコードを書いていきます。

■コード

def my_function(x):
  return x*2

class MyClass:
  def __init__(self, func):
    self.func = func

  def apply_func(self, x):
    return self.func(x)

obj_test = MyClass(my_function)

result = obj_test.apply_func(3)

print(result)

今回は、まずdef文を用いてmy_functionという関数を定義します。括弧内には引数,パラメータとして「x」を設定します。設定後、この関数が呼び出された時に実行される処理として、引数,パラメータとして渡された値を算術演算子”*(アスタリスク)”を用いて数値である「2」と乗算・掛け算します。乗算・掛け算した結果が、returnとして返されます。

次にMyClassというオブジェクトを作成するためのテンプレート(設計図)であるクラスを定義します。定義後、クラス内にdef文を用いて’__init__’と記述し、コンストラクタを使います。括弧内には、メソッドで渡される最初の引数,パラメータは、インスタンス(作成されたオブジェクト)自体でなければならないため、「self(自己)」と記述し、最初の引数として渡します。第2の引数,パラメータとして「func」を設定します。なお、最初の「self(自己)」という引数,パラメータを介して、「func」というクラスのインスタンス変数が初期化されます。この時にself(自己)に対してドット演算子( . )を用いてfuncを指定します。

次にクラス内にdef文を用いてapply_func()という関数を定義します。括弧内には、メソッドで渡される最初の引数,パラメータは、インスタンス(作成されたオブジェクト)自体でなければならないため、「self(自己)」と記述し、最初の引数として渡します。第2の引数,パラメータとして「x」を設定します。設定後、この関数が呼び出された時に実行される処理として、self(自己)に対してドット演算子( . )を用いてfunc()を指定し、インスタンス変数の作成を行います。作成後、括弧内に引数,パラメータとして「x」を設定します。これで、apply_func()という関数でmy_function()関数を呼び出す準備ができました。

その後、obj_testという変数を定義し、その中にMyClass()を格納し、インスタンス化を行います。インスタンス化によりオブジェクトが作成されたことで、クラス内にアクセスできるようになりました。そこで引数,パラメータに値を渡すために、括弧内にmy_functionという関数を渡します。

渡した後に、resultという変数を定義し作成したオブジェクトであるobj_testに対してドット演算子( . )を用いてapply_func()を呼び出します。呼び出した時に引数,パラメータとして今回は「3」を渡します。これでmy_functionという関数が呼び出され処理が実行し、実行された結果がresult変数に格納されます。あとはresult変数内の情報をprint()で出力します。

■実行・検証

このコードを保存し、Google Colaboratory上で、コード(セル)を実行してみます。

実行してみると、今回my_functionという関数を定義し、この関数(メソッド)を、クラス内で定義した関数(メソッド)の引数,パラメータとして渡し、my_functionという関数内の処理を実行。実行後、結果を出力させることができました。

 

コメント

タイトルとURLをコピーしました