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 相关文章推荐
pycharm安装图文教程
May 02 Python
python 递归遍历文件夹,并打印满足条件的文件路径实例
Aug 30 Python
python matplotlib画图实例代码分享
Dec 27 Python
Python3.6安装及引入Requests库的实现方法
Jan 24 Python
python入门前的第一课 python怎样入门
Mar 06 Python
Pycharm在创建py文件时,自动添加文件头注释的实例
May 07 Python
详解django中url路由配置及渲染方式
Feb 25 Python
Python flask框架post接口调用示例
Jul 03 Python
python查找特定名称文件并按序号、文件名分行打印输出的方法
Apr 24 Python
numpy矩阵数值太多不能全部显示的解决
May 14 Python
15款Python编辑器的优缺点,别再问我“选什么编辑器”啦
Oct 19 Python
python爬虫快速响应服务器的做法
Nov 24 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
简单易用的计数器(数据库)
2006/10/09 PHP
PHP5 面向对象程序设计
2008/02/13 PHP
PHP连接SQLSERVER 注意事项(附dll文件下载)
2012/06/28 PHP
PHP COOKIE及时生效的方法介绍
2014/02/14 PHP
PHP生成随机数的方法实例分析
2015/01/22 PHP
php 变量引用与变量销毁机制详细介绍
2016/12/05 PHP
CentOS系统中PHP安装扩展的方式汇总
2017/04/09 PHP
表单填写时用回车代替TAB的实现方法
2007/10/09 Javascript
js简单实现让文本框内容逐个字的显示出来
2013/10/22 Javascript
javascript实现链接单选效果的方法
2015/05/13 Javascript
AngularJs实现ng1.3+表单验证
2015/12/10 Javascript
jQuery实现的调整表格行tr上下顺序
2016/01/10 Javascript
微信小程序实战之仿android fragment可滑动底部导航栏(4)
2020/04/16 Javascript
解决React Native端口号修改的方法
2017/07/28 Javascript
JavaScript闭包和回调详解
2017/08/09 Javascript
用js实现before和after伪类的样式修改的示例代码
2017/09/07 Javascript
基于Vue生产环境部署详解
2017/09/15 Javascript
Angular数据绑定机制原理
2018/04/17 Javascript
vue异步axios获取的数据渲染到页面的方法
2018/08/09 Javascript
Vue路由 重定向和别名的区别说明
2020/09/09 Javascript
nuxt引入组件和公共样式的操作
2020/11/05 Javascript
python操作MySQL数据库具体方法
2013/10/28 Python
Python的numpy库中将矩阵转换为列表等函数的方法
2018/04/04 Python
Pandas之drop_duplicates:去除重复项方法
2018/04/18 Python
django+echart数据动态显示的例子
2019/08/12 Python
利用python查看数组中的所有元素是否相同
2021/01/08 Python
台湾家适得:Homeget
2019/02/11 全球购物
介绍一下SQL注入攻击的种类和防范手段
2012/02/18 面试题
销售人员自我评价
2014/02/01 职场文书
交通事故调解协议书
2014/04/16 职场文书
财务经理岗位职责范本
2015/04/08 职场文书
基层党建工作简报
2015/07/21 职场文书
小学英语教学随笔
2015/08/14 职场文书
高中班主任心得体会
2016/01/07 职场文书
2019年手机市场的调研报告2篇
2019/10/10 职场文书
oracle索引总结
2021/09/25 Oracle