これは、先ほど見た「クラスインスタンスの呼び出しによって返されるものを変更する」という質問に触発されましたが、すぐに__repr__
で回答されました(受け入れられたため、質問者は実際にインスタンスを呼び出すつもりはありませんでした)。
クラスのインスタンスの呼び出しは、次のように実行できます。
instance_of_object = object()
instance_of_object()
しかし、TypeError: 'object' object is not callable
のようなエラーが表示されます。
この動作はCPythonで定義されています ソースはこちら
したがって、Stackoverflowでこの質問があることを確認するには:
Pythonでクラスのインスタンスを実際にどのように呼び出しますか?
次のようにクラスのインスタンスを呼び出します。
o = object() # create our instance
o() # call the instance
しかし、これは通常エラーを与えます。
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'object' object is not callable
インスタンスを意図したとおりに呼び出して、おそらくそこから何か有用なものを得ることができますか?
Python特別な方法、__call__
!
class Knight(object):
def __call__(self, foo, bar, baz=None):
print(foo)
print(bar)
print(bar)
print(bar)
print(baz)
クラスをインスタンス化します。
a_knight = Knight()
これで、クラスインスタンスを呼び出すことができます。
a_knight('ni!', 'ichi', 'pitang-zoom-boing!')
印刷するもの:
ni!
ichi
ichi
ichi
pitang-zoom-boing!
そして実際に、そして成功して、calledクラスのインスタンスができました!