python 类中的__call__是什么?

文章目录

  • python 类中的__call__是什么?
    • 1.今天主要讲一下`__call__()`的用法
    • 2.这里再举一个自定义函数的例子,例如:
  • 总结

python 类中的__call__是什么?

在类class__call__()是python类中的一种内置方法也称魔法方法,这种在类中统一以_ _开头_ _(注意是两个下划线)结尾的方法,都属于类的内置方法,常用的魔法方法还有__init__,__new__,__del__,__str__,__repr__,等等。

1.今天主要讲一下__call__()的用法

__call__方法是把对象当成函数来使用的时候,会自动调用,也就是说把类的实例化对象,变成一个可以调用的对象,可以让实例对象可以像函数一样被调用。
在python官网里面说的是,此方法会在实例作为一个函数被“调用”时被调用。
python官网

下面直接来看代码理解吧!

输入:

class A:
    # 定义__call__方法
    def __call__(self, a, b):
        print("调用__call__()方法,把对象当成函数来使用", a, b)
    def hello(self, e, f):
        print("调用hello" + e + f)
    
        
c = A()
c("我是参数a", "你是参数b")  # 调用方法一
print("-" * 100)
c.__call__("我是参数a", "你是参数b")  # 调用方法二
print("*" * 100)
c.hello("我是参数e", "你是参数f")

结果

调用__call__()方法,把对象当成函数来使用 我是参数a 你是参数b
----------------------------------------------------------------------------------------------------
调用__call__()方法,把对象当成函数来使用 我是参数a 你是参数b
****************************************************************************************************
调用hello我是参数e你是参数f



由上可以看到,通过在A 类中实现 __call__() 方法,变为了可调用对象。使的 c 实例对象可直接用c()的方式输入参数a,b,不需要再.hello()调用。

2.这里再举一个自定义函数的例子,例如:

随便定义一个函数
输入

def say():
    print("小白一起学python")
say()  # 调用方法一
print("-" * 100)
say.__call__()  # 调用方法二

输出

小白一起学python # 调用方法一
----------------------------------------------------------------------------------------------------
小白一起学python # 调用方法二

总结

call方法是把对象当成函数来使用的时候,会自动调用。
参考链接
链接: link
链接: link
链接: link
链接: link

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
乘风的头像乘风管理团队
上一篇 2023年12月26日
下一篇 2023年12月26日

相关推荐