pythonで_call__メソッド解析

925 ワード

__call__の方法はpythonのマジックの方法で、いくつかの特殊な機能を増やすことです.__call__がどういう意味を表しているか見てみましょう.pythonのすべてのものはオブジェクトと呼ばれ、オブジェクトは呼び出すことができるオブジェクトと呼び出すことができないオブジェクトに分けられます.多くのPythonオブジェクトは、関数オペレータ()によって呼び出されるオブジェクトです.
1.例えば関数関数はオブジェクトであり、呼び出すことができる
def foo(x):
  retuen x

a=foo(3) #a   
print(a)
callable(foo())
callable(a)#   true,  foo      ,  ,      a       ,  foo    a 

2.しかし、クラスであればどうなるのでしょうか.Pythonはクラスに__call__という特別な方法を提供し、プログラマが呼び出し可能なオブジェクト(インスタンス)を作成できるようにした.デフォルトでは、__call__メソッドは実装されていません.これは、ほとんどの場合、インスタンスが呼び出せないことを意味します.
class test():
  def method(self):
    return 1
a = test()
callable(a)#false,    a      

この問題をどのように解決しますか?ここでは__call__関数を使います
class test():
  def __call__(self):
    return 1
a = test()
callable(a)#true,    a     

以上説明__call__