我试图理解__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__
时调用。
有人可以解释一下。
答案 0 :(得分:4)
https://docs.python.org/2/reference/datamodel.html#object.__call__
当像函数一样调用实例时,将调用 __ call__。这就是你对x()
所做的。 x.test()
正在调用实例的方法,而不是实例本身。