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 相关文章推荐
在Windows8上的搭建Python和Django环境
Jul 03 Python
Python字符串转换成浮点数函数分享
Jul 24 Python
python调用系统ffmpeg实现视频截图、http发送
Mar 06 Python
Python OpenCV处理图像之图像像素点操作
Jul 10 Python
python3 unicode列表转换为中文的实例
Oct 26 Python
六行python代码的爱心曲线详解
May 17 Python
python读csv文件时指定行为表头或无表头的方法
Jun 26 Python
简单了解django索引的相关知识
Jul 17 Python
django组合搜索实现过程详解(附代码)
Aug 06 Python
Python爬虫库requests获取响应内容、响应状态码、响应头
Jan 25 Python
详解有关PyCharm安装库失败的问题的解决方法
Feb 02 Python
Keras中 ImageDataGenerator函数的参数用法
Jul 03 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
使用Apache的rewrite技术
2006/06/22 PHP
探讨如何在PHP开启gzip页面压缩实例
2013/06/09 PHP
PHP之autoload运行机制实例分析
2014/08/28 PHP
PHP计算数组中值的和与乘积的方法(array_sum与array_product函数)
2016/04/01 PHP
PHP实现倒计时功能
2020/11/16 PHP
ajax无刷新动态调用股票信息(改良版)
2008/11/01 Javascript
JavaScript学习笔记之获取当前目录的实现代码
2010/12/14 Javascript
jQuery EasyUI API 中文文档 搜索框
2011/09/29 Javascript
node.js应用后台守护进程管理器Forever安装和使用实例
2014/06/01 Javascript
js实现透明度渐变效果的方法
2015/04/10 Javascript
jqTransform美化表单
2015/10/10 Javascript
每天一篇javascript学习小结(Function对象)
2015/11/16 Javascript
在javascript中创建对象的各种模式解析
2016/05/16 Javascript
基于gulp合并压缩Seajs模块的方式说明
2016/06/14 Javascript
浅谈React 属性和状态的一些总结
2016/11/21 Javascript
jquery对所有input type=text的控件赋值实现方法
2016/12/02 Javascript
Angular 4.x中表单Reactive Forms详解
2017/04/25 Javascript
python使用PyV8执行javascript代码示例分享
2013/12/04 Python
用Python计算三角函数之acos()方法的使用
2015/05/15 Python
python实现文件路径和url相互转换的方法
2015/07/06 Python
使用python对excle和json互相转换的示例
2018/10/23 Python
Python OpenCV对本地视频文件进行分帧保存的实例
2019/01/08 Python
正确理解Python中if __name__ == '__main__'
2019/01/24 Python
keras获得某一层或者某层权重的输出实例
2020/01/24 Python
python实现控制台输出彩色字体
2020/04/05 Python
PIP和conda 更换国内安装源的方法步骤
2020/09/21 Python
HTML5通用接口详解
2016/06/12 HTML / CSS
英国豪华装饰照明品牌的在线零售商:Inspyer Lighting
2019/12/10 全球购物
创建绿色社区汇报材料
2014/08/22 职场文书
课内比教学心得体会
2014/09/09 职场文书
优秀员工推荐材料
2014/12/20 职场文书
高校教师个人总结
2015/02/10 职场文书
青春雷锋观后感
2015/06/10 职场文书
2015年高中语文教学总结
2015/08/18 职场文书
解决jupyter notebook启动后没有token的坑
2021/04/24 Python
Python中的matplotlib绘制百分比堆叠柱状图,并为每一个类别设置不同的填充图案
2022/04/20 Python