イントロダクション
この記事では、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を返します。
では、どのような場合にそうなるのか見てみましょう。
#truedef demo():
print("demo() called!")
#object createddemo_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 callable? True
demo_class is callable? True
demo_class_obj is callable? True
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でクラスのすべてのメソッドを一覧として表示する方法
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 callable? False
demo_class_obj is callable? False
|
上のコードでは
- 整数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を回避することができます。
このトピックを明確に理解していただけたでしょうか。
何か質問があれば、以下にコメントしてください。