Pythonのcallableメソッドとは?クラスや関数での判定のやり方を解説する

スポンサーリンク
スポンサーリンク

イントロダクション

この記事では、Pythonのcallable()メソッドについて、その使い方と動作について説明します。

基本的に、オブジェクトやインスタンスに __call__() 関数が定義されている場合、callable と呼ばれます。

その場合、a.integrate_call_see(arg1, arg2, …)を簡単に言うと、a(arg1,arg2, …)というように参照することができます

したがって、callableになる。

Python の callable() メソッド

さらに、Pythonの callable() メソッドは、ユーザーが呼び出し可能なオブジェクトや関数とそうでないものを簡単に識別できるようにします。

これは引数が1つの関数で、渡されたオブジェクトが呼び出し可能であれば真を、そうでなければ偽を返します。

このメソッドのシンタックスは以下のとおりです。

callable(obj)

ここで、obj は、ユーザが呼び出し可能かどうかを調べたいインスタンスまたはオブジェクトです。

Python callable() メソッドの働き

Python の callable() メソッドについて明確に理解するために、いくつかの例を見てみましょう。

Pythonのcallable()がTrueを返すとき

先に述べたように、このメソッドは渡されたオブジェクトがcallableであるときにtrueを返します。

では、どのような場合にそうなるのか見てみましょう。

#true
def demo():
    print("demo() called!")
 
#object created
demo_obj = demo
 
class demo_class:
    def __call__(self, *args, **kwargs): #__call__() is defined here
        print("__call__() defined!")
 
 
demo_class_obj = demo_class()
 
print("demo_obj is callable? ",callable(demo_obj))
print("demo_class is callable? ",callable(demo_class)) #classes are always callable
print("demo_class_obj is callable? ",callable(demo_class_obj))
 
demo_obj() #calling demo()'s object
demo_class_obj() #calling the demo_class object

出力されます。

demo_obj is callableTrue
demo_class is callableTrue
demo_class_obj is callableTrue
demo() called!
__call__() defined!

ここで

  • demo()` 関数を定義し、そのインスタンス demo_obj を生成します。
  • 次に、__call__() 関数で新しいクラス demo_class を定義します。
  • そして、demo_class のオブジェクト demo_class_obj を生成します。
  • 最後に、作成されたオブジェクトとクラスが呼び出し可能かどうかをチェックします。出力から、呼び出し可能であることが分かる。
  • 最後に、関数 demo()demo_class_obj() の両方を呼び出します。demoクラスのオブジェクト呼び出しの場合、出力からわかるように、 _call_¦()メソッドが実行されます。

注意:すべてのクラスは callable なので、どのクラスでも callable() メソッドは true を返します。

これは上記の例から明らかで、demo_classのcallable()出力を確認してみると、以下のようになります。

Pythonのcallable()がFalseを返すとき

繰り返しになりますが、callable()は渡されたオブジェクトが呼び出し可能でない場合、falseを返します。

では、どのような場合にそうなるのか見てみましょう。

n = 10
 
class demo_class:
    def print_demo(self):
        print("demo")
 
demo_class_obj = demo_class()
 
print("n is callable? ",callable(n))
 
print("demo_class_obj is callable? ",callable(demo_class_obj))

出力されます。

n is callableFalse
demo_class_obj is callableFalse

上のコードでは

  • 整数nをn = 10として初期化します。
  • そして、メンバ関数 print_demo() を持つ demo_class クラスを定義しています。
  • その後、demo_class のオブジェクト demo_class_obj を生成します。
  • 最後に、nとdemo_class_objがcallableかどうかをチェックします。

nは整数であり、明らかに呼び出すことができません。

一方、demo_class_objの場合、クラス(demo_class)には定義された
call()`メソッドがない。

したがって、callableではありません。

まとめ

この記事では、Pythonのcallable()メソッドと、その動作について学びました。

このメソッドは、プログラムのエラーチェックに広く使われています。

実際に呼び出す前に、オブジェクトや関数が呼び出し可能かどうかをチェックすることで、TypeErrorを回避することができます

このトピックを明確に理解していただけたでしょうか。

何か質問があれば、以下にコメントしてください。

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