pythonの_call__

717 ワード

通常、関数を呼び出すときに「関数名(パラメータ)」;クラスのメソッドを呼び出す必要がある場合は、クラスのインスタンスから呼び出される「クラス名.メソッド名(canshu)」です.クラスメソッドを呼び出すときに「インスタンス名(パラメータ)」を実装したいのですが、実装できますか?call__方法は私たちにこの効果を実現することができます.
class Person(object):
    def __init__(self, name, gender):
        self.name = name
        self.gender = gender
    def __call__(self, friend):
        print 'My name is %s...' % self.name
        print 'My friend is %s...'% friend
p = Person('admin', 'male')
print p.name, p.gender
p('yjy')
==> admin male
==> My name is admin...
==> My friend is yjy...

上記コードでは、call__()特別な方法ではありません.普段なら呼び出したいです.call__()メソッドは、p._call__()にアクセスできます.インスタンスを呼び出すだけでp('yjy')