Python クラス __call__とは

callとは何なのか

Pythonでクラスを扱う際に__call__を利用することがあります。__call__はインスタンス化したオブジェクトを関数のように呼び出すことで呼びだされる特殊なメソッドです。

例えば次のようなコードを読んでみましょう。

class Test():
	
	def __init__(self, test):
		self.test = test 

	def __call__(self):
		print("called!!")

t = Test('test')
t()

上のコードにて、tと言うオブジェクトを定義しています。この時に、インスタンス生成時には__init__が呼び出されますが、その後のt()と言う記述にて、6行目の__call__が呼び出されています。また__call__にはreturnを記載することが出来るため次のようなプログラムも記述できます。(コードには特に意味はありませんが、__call__の動作を理解する上で、__call__にて10を返すだけのプログラムになります。)

class Test():

	def __init__(self, test):
		self.test = test 

	def __call__(self):
		# print("called!!")
		return 10

t = Test('test')
value = t()
print(value)

上記のコードを実行すると、変数valueに10が代入されます。

Pythonを効率よく学ぶには?

Pythonを効率よく学ぶには、普段からPythonを利用している現役のデータサイエンティストや機械学習エンジニアに質問できる環境で学ぶことです。
質問し放題かつ、体系的に学べる動画コンテンツでデータ分析技術を学びたい方は、オンラインで好きな時間に勉強できるAI Academy Bootcampがオススメです。受講料も業界最安値の35,000円(6ヶ月間質問し放題+オリジナルの動画コンテンツ、テキストコンテンツの利用可能)なので、是非ご活用ください。