Python中有趣在__call__函数


Posted in Python onJune 21, 2015

Python中有一个有趣的语法,只要定义类型的时候,实现__call__函数,这个类型就成为可调用的。
换句话说,我们可以把这个类型的对象当作函数来使用,相当于 重载了括号运算符。

class g_dpm(object):
def __init__(self, g):
self.g = g
def __call__(self, t):
return (self.g*t**2)/2

计算地球场景的时候,我们就可以令e_dpm = g_dpm(9.8),s = e_dpm(t)。

class Animal(object):
  def __init__(self, name, legs):
    self.name = name
    self.legs = legs
    self.stomach = []    
 
  def __call__(self,food):
    self.stomach.append(food)
 
  def poop(self):
    if len(self.stomach) > 0:
      return self.stomach.pop(0)
 
  def __str__(self):    
    return 'A animal named %s' % (self.name)    
 
cow = Animal('king', 4) #We make a cow
dog = Animal('flopp', 4) #We can make many animals
print 'We have 2 animales a cow name %s and dog named %s,both have %s legs' % (cow.name, dog.name, cow.legs)
print cow #here __str__ metod work
 
#We give food to cow
cow('gras')
print cow.stomach
 
#We give food to dog
dog('bone')
dog('beef')
print dog.stomach
 
#What comes inn most come out
print cow.poop()
print cow.stomach #Empty stomach
 
'''-->output
We have 2 animales a cow name king and dog named flopp,both have 4 legs
A animal named king
['gras']
['bone', 'beef']
gras
[]
'''
Python 相关文章推荐
Python使用minidom读写xml的方法
Jun 03 Python
python修改字典内key对应值的方法
Jul 11 Python
基于python脚本实现软件的注册功能(机器码+注册码机制)
Oct 09 Python
python实现unicode转中文及转换默认编码的方法
Apr 29 Python
Python变量和字符串详解
Apr 29 Python
Opencv+Python 色彩通道拆分及合并的示例
Dec 08 Python
在python中将字符串转为json对象并取值的方法
Dec 31 Python
在自动化中用python实现键盘操作的方法详解
Jul 19 Python
Python识别html主要文本框过程解析
Feb 18 Python
django 读取图片到页面实例
Mar 27 Python
pandas读取csv文件提示不存在的解决方法及原因分析
Apr 21 Python
音频处理 windows10下python三方库librosa安装教程
Jun 20 Python
Python的装饰器模式与面向切面编程详解
Jun 21 #Python
Python安装第三方库的3种方法
Jun 21 #Python
Python实现线程池代码分享
Jun 21 #Python
Python os模块学习笔记
Jun 21 #Python
Pthon批量处理将pdb文件生成dssp文件
Jun 21 #Python
Python实现删除文件但保留指定文件
Jun 21 #Python
Python ValueError: invalid literal for int() with base 10 实用解决方法
Jun 21 #Python
You might like
用IE远程创建Mysql数据库的简易程序
2006/10/09 PHP
php把数据表导出为Excel表的最简单、最快的方法(不用插件)
2014/05/10 PHP
ThinkPHP3.2.2的插件控制器功能
2015/03/05 PHP
php实现的中秋博饼游戏之掷骰子并输出结果功能详解
2017/11/06 PHP
Laravel路由研究之domain解决多域名问题的方法示例
2019/04/04 PHP
PHP中的异常处理机制深入讲解
2020/11/10 PHP
js 数组实现一个类似ruby的迭代器
2009/10/27 Javascript
javascript实现div的拖动并调整大小类似qq空间个性编辑模块
2012/12/12 Javascript
完善的jquery处理机制
2016/02/21 Javascript
利用node.js如何搭建一个简易的即时响应服务器
2017/05/28 Javascript
深入理解Promise.all
2018/08/08 Javascript
使用Vue实现调用接口加载页面初始数据
2019/10/28 Javascript
js 解析 JSON 数据简单示例
2020/04/21 Javascript
Layui弹框中数据表格中可双击选择一条数据的实现
2020/05/06 Javascript
Python Web框架Flask信号机制(signals)介绍
2015/01/01 Python
详解Python函数可变参数定义及其参数传递方式
2017/08/02 Python
python学习笔记之列表(list)与元组(tuple)详解
2017/11/23 Python
Python文件操作基本流程代码实例
2017/12/11 Python
Python实现PS图像调整之对比度调整功能示例
2018/01/26 Python
pandas.DataFrame选取/排除特定行的方法
2018/07/03 Python
python 获得任意路径下的文件及其根目录的方法
2019/02/16 Python
使用python实现微信小程序自动签到功能
2020/04/27 Python
PythonPC客户端自动化实现原理(pywinauto)
2020/05/28 Python
python 匿名函数与三元运算学习笔记
2020/10/23 Python
Python用户自定义异常的实现
2020/12/25 Python
Python实现微信表情包炸群功能
2021/01/28 Python
HTML+CSS3 模仿Windows7 桌面效果
2010/06/17 HTML / CSS
CSS3 实现footer 固定在底部(无论页面多高始终在底部)
2019/10/15 HTML / CSS
canvas仿写贝塞尔曲线的示例代码
2017/12/29 HTML / CSS
编写用C语言实现的求n阶阶乘问题的递归算法
2014/10/21 面试题
什么是Connection-oriented Protocol/Connectionless Protocol面向连接的协议/无连接协议
2012/09/06 面试题
求职信的要素有哪些呢
2013/12/26 职场文书
房屋维修协议书范本
2014/09/25 职场文书
五一劳动节慰问信
2015/02/14 职场文书
2015年销售员工作总结范文
2015/04/07 职场文书
《Estab Life》4月6日播出 正式PV、主视觉图公开
2022/03/20 日漫