Pythonでhasattr() 関数を使用し変数が関数かどうかを検出する

スポンサーリンク

Pythonでhasattr() 関数を使用し変数が関数かどうかを検出してみます。

hasattr() 関数は、括弧内に引数,パラメータとして渡されたオブジェクトが括弧内で指定した属性(attribute)を持っている場合に「True(真)」を返し、そうでない場合に「False(偽)」を返します。

■Python

Google Colaboratory(Google Colab),2022年11月25日現在、Python 3.7.15を使用している。

■hasattr() 関数を使用し変数が関数かどうかを検出する

では、hasattr() 関数を使用し変数が関数かどうかを検出するスクリプトを書いていきます。

■コード

def test_a(a, b):
    return a+b
  
print(hasattr(test_a, '__call__'))

value_1 = 123

print(hasattr(value_1, '__call__'))

まずは、def文を用いてtest_aという関数を定義する。関数の括弧内には引数,パラメータとしてa,bを設定します。設定後、関数が呼び出された時に実行する処理をdef文内に記述します。今回は定義した関数に渡された引数,パラメータを算術演算子を用いて加算(引き算,”+”(プラス))を行い、演算された結果をreturnとして返すものです。

関数を定義後、hasattr()を用います。括弧内にはまず第1の引数,パラメータとして今回定義した関数名であるtest_aを渡します。次に第2の引数,パラメータとして属性(attribute)を渡します。今回は「__call__」と記述します。これはオブジェクト(インスタンス)が関数のように動作できるようになる特別な関数です。これで、指定した属性(attribute)を持っている場合に「True(真)」を返し、そうでない場合に「False(偽)」を返します。返された情報をprint()で出力します。

次に今回は比較としてvalue_1という変数を定義し、その中に「123」という数値を格納します。格納後、先ほどと同じようにhasattr()を用います。括弧内には第1の引数,パラメータとしてvalue_1変数を渡します。次に第2の引数,パラメータとして属性(attribute)を渡します。今回は「__call__」と記述します。これで指定した属性(attribute)を持っているか、そうでないかを確認し、確認された情報が返されます。返された情報をprint()で出力します。

■実行・検証

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

実行してみると、hasattr()を用いて、2つの変数が関数であるか、そうではないかを確認してみましたが、test_aの方は、「True(真)」が出力され、数値を格納した変数であるvalue_1は「False(偽)」と出力されました。

コメント

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