Python魔法方法之 __call__
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python魔法方法之 __call__,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1515字,纯文字阅读大概需要3分钟。
内容图文
前言
Python的魔法方法是指Python内部已经包含的,被双下划线所包围的方法,这些方法在特定的操作时会自动被调用。
魔法方法可以使Python的自由度变得更高,当不重载魔法方法时它可以在规定的默认情况下生效,也可以根据自己的需求来重载分魔法方法来达到自己的目的。
__call__()
__call__(self,[*args])
允许一个类实例对象能像函数那样被调用。在介绍__call__
之前,我们来先来介绍一个概念,可调用对象:
在Python中,凡是可以将()直接应用到自身并执行,都可以称为 可调用对象,它包括 自定义函数,内置函数,类。
判断一个对象是否是可调用对象,我们可以用Python内置的函数callable()
,如我们定义了类str_cls
,我们可以用它来判断是否是个可调用对象:
>>> class str_cls(): ... pass ... >>> callable(str_cls) True # 对实例对象 a 做判断 >>> a = str_cls() >>> callable(a) False
可以看到,类是可调用对象,实例对象不是可调用对象,而一旦在类内部实现了 __call__
方法,那么该类创建的实例对象也将称为一个可调用对象,看下面示例:
>>> class Animal(): ... def __init__(self,name,age): ... self.name = name ... self.age = age ... def __call__(self,food): ... print("my name is %s,i'm %d old" %(self.name,self.age)) ... print('i eat %s' % food) ... >>> dog = Animal('dog',12) >>> callable(Animal) True >>> callable(dog) True >>> dog('milk') my name is dog,i'm 12 old i eat milk
可以看到,我们在类Animal
中实现了__call__
方法,实例对象dog
也是可调用对象,并且 dog('milk')
实际上是调用了__call__(self,food)
方法.
如果没有实现__call__
方法,那么去调用dog('milk')
,会抛出异常提示Animal实例对象是不可调用的: TypeError: 'Animal' object is not callable
?
内容总结
以上是互联网集市为您收集整理的Python魔法方法之 __call__全部内容,希望文章能够帮你解决Python魔法方法之 __call__所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。