明らかになったメタクラスとは何か、私はそれが実際に何を意味するのか知らずにいつも使っている関連する概念があります。
おそらく誰もが一度は括弧の使い方を間違えて、「オブジェクトは呼び出し可能ではありません」という例外を出したことがあるでしょう。さらに、 と を使用する__init__
と、これが何に使える__new__
のか疑問に思うでしょう。__call__
マジックメソッドの例を含めて、いくつか説明していただけますか?
ベストアンサー1
呼び出し可能オブジェクトとは、呼び出すことができるオブジェクトのことです。
の組み込み呼び出し可能オブジェクト(objects.c の PyCallable_Check)引数が次のいずれかであるかどうかを確認します。
- メソッドを持つクラスのインスタンス
__call__
または - それ以外の場合の呼び出し可能性を示す、null 以外のtp_call (c 構造体) メンバーを持つ型です(関数、メソッドなど)
メソッド名__call__
は(文書によると)
インスタンスが関数として「呼び出される」ときに呼び出されます
例
class Foo:
def __call__(self):
print 'called'
foo_instance = Foo()
foo_instance() #this is calling the __call__ method