python类中的call方法_python类中的 __call__()方法运用

__call__()是一种magic method,在类中实现这一方法可以使该类的实例(对象)像函数一样被调用。默认情况下该方法在类中是没有被实现的。使用callable()方法可以判断某对象是否可以被调用。

__call__()方法的作用其实是把一个类的实例化对象变成了可调用对象,也就是说把一个类的实例化对象变成了可调用对象,只要类里实现了__call__()方法就行。如当类里没有实现__call__()时,此时的对象p 只是个类的实例,不是一个可调用的对象,当调用它时会报错:‘Person’ object is not callable.

先看一个简单的案例

class People(object):

def __init__(self,name):

self.name=name

def __call__(self):

print("hello "+self.name)

a = People('无忌!')

a.__call__() # 调用方法一

a() # 调用方法二

结果:

hello 无忌!

hello 无忌!

在编写类的时候,如果写了__call__()方法,在实例化的对象进行调用的时候就会有 实例对象点__call__()和 object()这两种使用方式效果一样的现象,即调用方法一和调用方法二效果一样。

如下图:

现在把Person类的实例p变成可调用的对象

单看 p(‘Tim’) 你无法确定 p 是一个函数还是一个类实例,所以,在Python中,函数也是对象,对象和函数的区别并不显著。

其实p('Tim')相当于 #-->p.__call__('Tim')

总结:

1.python 可调用对象:可以通过内置函数callable来判断,如:

print(callable(p)) # True

2.如果类定义了__call__方法,那么它的实例可以变为可调用对象

参考:

https://blog.csdn.net/qq_42982682/article/details/104717797

https://blog.csdn.net/weixin_46260870/article/details/106304159

原文链接:https://blog.csdn.net/weixin_43593330/article/details/108174666

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值