请问类名()何时会等于类名.__call__() ?

2017-08-29 21:24:20 +08:00
 saximi

class Foo: 
        def __call__(): 
                print("call") 

if __name__=='__main__': 
        Foo() 
        print("--------") 
        Foo.__call__() 


上面代码输出如下:
--------
call

请问为何这里 Foo()不等于 Foo.call(),什么情况下才会相等呢? 谢谢

1616 次点击
所在节点    Python
4 条回复
Anybfans
2017-08-29 21:33:11 +08:00
Foo() 执行的是__init__方法 可以试试这样 f = Foo() f()
laike9m
2017-08-29 21:34:59 +08:00
janxin
2017-08-29 21:43:14 +08:00
class Foo:
def __call__(self):
print("call")

if __name__=='__main__':
f = Foo()
print("--------")
f()
saximi
2017-08-30 21:11:20 +08:00
@janxin 谢谢,我还是有疑问,为何__call__加入 self 参数后就使得 Foo()会调用 Foo.__call__() ,否则这不会调用呢?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/386717

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX