调用类中的方法时__call__

时间:2015-01-31 23:51:38

标签: python python-3.x

我试图理解__call__(python3)的含义。写这个来区分每个方法__init____call__和测试方法。

#!/usr/bin/python3

class thara(object):

   def __init__(self):
        print("init called")

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

   def test(self):
       print("test called")

x=thara()  ### constructor calling here
x()   ## __call__  calling here
x.test() ## test method calling here

我的问题是,当我发起x.test()时,为什么不调用__call__?我想的是,如果我启动x.test()将启动实例x(),它应该自动调用__call__方法。但是根据我的输出{{1} }只会在发起__call__时调用。

有人可以解释一下。

1 个答案:

答案 0 :(得分:4)

https://docs.python.org/2/reference/datamodel.html#object.__call__

当像函数一样调用实例时,将调用

__ call__。这就是你对x()所做的。 x.test()正在调用实例的方法,而不是实例本身。