Python中__call__用法实例


Posted in Python onAugust 29, 2014

本文实例讲述了Python中__call__的用法,分享给大家供大家参考之用。具体方法如下:

先来看看如下示例代码:

#call.py 一个class被载入的情况下。
class Next:
  List = []
  
  def __init__(self,low,high) :
    for Num in range(low,high) :
      self.List.append(Num ** 2)
  
  def __call__(self,Nu):
    return self.List[Nu]

如果 这样使用:

b = Next(1,7)
print b.List
print b(2)

那么回馈很正常:

[1, 4, 9, 16, 25, 36]
9

但如果这样使用:

b = Next
b(1,7)
print b.List
print b(2)
$python ./call.py
[1, 4, 9, 16, 25, 36]

Traceback (most recent call last):
 File "cal.py", line 17, in <module>
  print b(2) 
TypeError: __init__() takes exactly 3 arguments (2 given)

__init__是初始化函数,在生成类的实例时执行。

而__call__是模拟()的调用,需要在实例上应用,因此这个实例自然是已经执行过__init__了。

你所举的后面那个例子:

b = Next

这并不是创建实例,而是将class赋给一个变量。因此后面使用b进行的操作都是对Next类的操作,那么其实就是:

Next(1,7)
print Next.List
print Next(2)

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
python使用socket向客户端发送数据的方法
Apr 29 Python
Python实现二维有序数组查找的方法
Apr 27 Python
浅析AST抽象语法树及Python代码实现
Jun 06 Python
Python遍历文件夹和读写文件的实现方法
May 10 Python
Python编程使用*解包和itertools.product()求笛卡尔积的方法
Dec 18 Python
在PyCharm中实现关闭一个死循环程序的方法
Nov 29 Python
Python给图像添加噪声具体操作
Mar 03 Python
Python的条件锁与事件共享详解
Sep 12 Python
python3 字符串知识点学习笔记
Feb 08 Python
如何在django中运行scrapy框架
Apr 22 Python
pandas实现导出数据的四种方式
Dec 13 Python
Python标准库pathlib操作目录和文件
Nov 20 Python
python进阶教程之词典、字典、dict
Aug 29 #Python
python字符串排序方法
Aug 29 #Python
python基础教程之对象和类的实际运用
Aug 29 #Python
python基础教程之面向对象的一些概念
Aug 29 #Python
初学Python实用技巧两则
Aug 29 #Python
python基础教程之自定义函数介绍
Aug 29 #Python
python爬虫常用的模块分析
Aug 29 #Python
You might like
《神奇女侠:血脉》神力女超人大战犯罪公司
2020/04/09 欧美动漫
php下通过伪造http头破解防盗链的代码
2010/07/03 PHP
php安装xdebug/php安装pear/phpunit详解步骤(图)
2013/12/22 PHP
php源码分析之DZX1.5加密解密函数authcode用法
2015/06/17 PHP
关于php支持的协议与封装协议总结(推荐)
2017/11/17 PHP
如何重写Laravel异常处理类详解
2020/12/20 PHP
客户端静态页面玩分页
2006/06/26 Javascript
jQuery学习笔记之jQuery的事件
2010/12/22 Javascript
JavaScript原型继承之基础机制分析
2011/08/26 Javascript
一个JavaScript用逗号分割字符串实例
2014/09/22 Javascript
微信小程序 选择器(时间,日期,地区)实例详解
2016/11/16 Javascript
微信公众平台开发教程(六)获取个性二维码的实例
2016/12/02 Javascript
javascript使用btoa和atob来进行Base64转码和解码
2017/03/20 Javascript
详解jQuery同步Ajax带来的UI线程阻塞问题及解决办法
2017/08/09 jQuery
js编写简单的聊天室功能
2017/08/17 Javascript
Node.js net模块功能及事件监听用法分析
2019/01/05 Javascript
jQuery事件blur()方法的使用实例讲解
2019/03/30 jQuery
理理Vue细节(推荐)
2019/04/16 Javascript
VUE脚手架具体使用方法
2019/05/20 Javascript
如何使用CSS3和JQuery easing 插件制作绚丽菜单
2019/06/18 jQuery
解决antd datepicker 获取时间默认少8个小时的问题
2020/10/29 Javascript
Python利用QQ邮箱发送邮件的实现方法(分享)
2017/06/09 Python
Python设计模式之MVC模式简单示例
2018/01/10 Python
利用pandas进行大文件计数处理的方法
2018/07/25 Python
python算法题 链表反转详解
2019/07/02 Python
Django 对象关系映射(ORM)源码详解
2019/08/06 Python
Python原始套接字编程实例解析
2020/01/29 Python
解决jupyter notebook显示不全出现框框或者乱码问题
2020/04/09 Python
英国领先的狗和宠物美容专家:Christies Direct
2017/04/03 全球购物
如何开启linux的ssh服务
2013/06/03 面试题
电大毕业个人生自我鉴定
2014/03/26 职场文书
青春雷锋观后感
2015/06/10 职场文书
结婚典礼主持词
2015/06/29 职场文书
初中政治教师教学反思
2016/02/23 职场文书
为了顺利买到演唱会的票用Python制作了自动抢票的脚本
2021/10/16 Python
python turtle绘制多边形和跳跃和改变速度特效
2022/03/16 Python