python代码,对比__init__方法,如何理解__call__方法?
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
在上一篇有关python
继承的文章中,大家可以看到在python
中类的初始化是使用__init__
进行的。实际上在python
的世界里面,还有个和__init__
方法非常类似的自执行的__call__
方法。那么,这个__call__
方法和__init__
方法有什么异同呢?请参考本文中的内容。
大家好,这里是苏南大叔的程序如此灵动博客,这里记录苏南大叔和计算机代码的故事。本文重点描述,__call__
和__init__
的异同点。测试环境:win10
,python@3.6.8
。
苏南大叔以前写过一篇__init__.py
文件作用的文章,可以点击下面的链接查看:
__call__
函数使用方式:
__call__
存在于函数function
中,如果把函数想象成类的话,那么__call__
就是被自动执行的函数。
def hora(str="hora"):
print("苏南大叔说:"+str+"~")
hora()
hora.__call__("hi")
__call__
在对象中的使用方式:
__call__
存在于对象class
中,
class greeting:
def __init__(self, str):
print("init")
self.str = str
def __call__(self, name):
print("call", name + ":"+self.str)
greeting("hi")
greeting("hello").__call__("苏南")
greeting("hora")("苏南大叔")
类中的__init__
对比__call__
。从上述代码中,可以看到:
__init__
是初始化的时候,自动调用的。__init__
是()
,__call__
是()()
。__call__
可以显式调用。__call__
是把一个python
类作为python
函数的时候自动调用的。
相关文章
- https://newsn.net/say/python-__init__py.html
- https://newsn.net/say/python-set-vs-list.html
- https://newsn.net/say/python-slice-join.html
- https://newsn.net/say/python-json.html
综述
通过一个__call__
方法,就可以把一个类的实例,变成一个函数。更多python
的使用经验,请点击下面的链接:
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。