本文相关描述主要是个人的认知和见解,如有不当之处,还望各位大佬指正。
个人其他博客地址:
简书:https://www.jianshu.com/u/d6960089b087
掘金:https://juejin.cn/user/2963939079225608
小钟同学 | 文 【原创】| QQ:308711822
Python 中,可以将 () 直接应用到自身并执行的,都称为可调用对象,我们都可以统称为可调用对象。
通常如果我们需要判断我们的python对象是否能否调用,可以使用内置的 callable() 函数。
从定义中可以知道,只要我们的可以把()加到对象上进行调用成功,那就说明它是一个可调用的对象。在Python 类中__call__()一个非常特殊的实例方法的功能类似于在类中重载 () 运算符,它可以我们的使得类实例对象可以像调用普通函数那样,以“对象名()”的形式进行调用。
如:
class Ape:
# 定义__call__方法
def __call__(self,name):
print("调用__call__()方法",name)
a = Ape()
a("我是你大爷")
输出的结果为:
调用__call__()方法 我是你大爷
换另一种思路看其实就是我们的调用调用__call__的方法:
class Ape:
# 定义__call__方法
def __call__(self,name):
print("调用__call__()方法",name)
a = Ape()
a.__call__("我是你大爷")
class Ape:
# 定义__call__方法
def __call__(self,name):
print("调用__call__()方法",name)
a = Ape()
print(callable(Ape()))
print(callable(a))
print(callable(a('是都是都')))
输出的结果为:
True
True
调用__call__()方法 是都是都
False
纯属个人实践中相关经验阐述总结,如有纰漏,还希望大佬们多多提点!小钟同学 | 文 【原创】| QQ:308711822
原文作者:程序员小钟同学;如有侵权,请联系管理员删除。