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という関数内の処理を実行。実行後、結果を出力させることができました。
コメント