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实现数据库并行读取和写入实例
Jun 09 Python
Python自定义线程类简单示例
Mar 23 Python
Python实现字符串的逆序 C++字符串逆序算法
May 28 Python
Python面向对象之接口、抽象类与多态详解
Aug 27 Python
对python捕获ctrl+c手工中断程序的两种方法详解
Dec 26 Python
在python3中pyqt5和mayavi不兼容问题的解决方法
Jan 08 Python
python代码实现逻辑回归logistic原理
Aug 07 Python
Python实现语音识别和语音合成功能
Sep 20 Python
python利用百度云接口实现车牌识别的示例
Feb 21 Python
浅谈selenium如何应对网页内容需要鼠标滚动加载的问题
Mar 14 Python
Python绘制散乱的点构成的图的方法
Apr 21 Python
Python四款GUI图形界面库介绍
Jun 05 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
php下判断数组中是否存在相同的值array_unique
2008/03/25 PHP
PHP 第三节 变量介绍
2012/04/28 PHP
ThinkPHP实现多数据库连接的解决方法
2014/07/01 PHP
PHP中iconv函数知识汇总
2015/07/02 PHP
Yii2主题(Theme)用法详解
2016/07/23 PHP
CodeIgniter框架基本增删改查操作示例
2017/03/23 PHP
用JavaScript对JSON进行模式匹配(Part 1-设计)
2010/07/17 Javascript
jQuery结合PHP+MySQL实现二级联动下拉列表[实例]
2011/11/15 Javascript
js实现省市联动效果的简单实例
2014/02/10 Javascript
ExtJS判断IE浏览器类型的方法
2014/02/10 Javascript
NodeJS制作爬虫全过程(续)
2014/12/22 NodeJs
jQuery选择器querySelector的使用指南
2015/01/23 Javascript
基于replaceChild制作简单的吞噬特效
2015/09/21 Javascript
解析jquery easyui tree异步加载子节点问题
2017/03/08 Javascript
Vue.js实现文章评论和回复评论功能
2020/05/30 Javascript
收藏AngularJS中最重要的核心功能
2017/07/09 Javascript
bootstrap精简教程_动力节点Java学院整理
2017/07/14 Javascript
node.js读取Excel数据(下载图片)的方法示例
2018/08/02 Javascript
element-ui中select组件绑定值改变,触发change事件方法
2018/08/24 Javascript
VueJS 组件参数名命名与组件属性转化问题
2018/12/03 Javascript
python绘制铅球的运行轨迹代码分享
2017/11/14 Python
Python实现的括号匹配判断功能示例
2018/08/25 Python
浅析pandas 数据结构中的DataFrame
2019/10/12 Python
关于pandas的离散化,面元划分详解
2019/11/22 Python
使用html2canvas实现将html内容写入到canvas中生成图片
2020/01/03 HTML / CSS
英国空调、除湿机和通风设备排名第一:Air Con Centre
2019/02/25 全球购物
英国家电购物网站:Sonic Direct
2019/03/26 全球购物
C#面试题问题集
2016/04/02 面试题
财务人员求职自荐书范文
2014/02/10 职场文书
大学生工作求职信
2014/06/23 职场文书
工作汇报开头与结尾怎么写
2014/11/08 职场文书
给医院的感谢信
2015/01/21 职场文书
贪污检举信范文
2015/03/02 职场文书
2015年中秋放假通知范文
2015/08/18 职场文书
2016最新离婚协议书范本及程序
2016/03/18 职场文书
解决redis sentinel 频繁主备切换的问题
2021/04/12 Redis