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简单获取本机计算机名和IP地址的方法
Jun 03 Python
解决python3在anaconda下安装caffe失败的问题
Jun 15 Python
Python SqlAlchemy动态添加数据表字段实例解析
Feb 07 Python
python unittest实现api自动化测试
Apr 04 Python
Python3实现的字典遍历操作详解
Apr 18 Python
浅谈Series和DataFrame中的sort_index方法
Jun 07 Python
pandas.DataFrame的pivot()和unstack()实现行转列
Jul 06 Python
django迁移数据库错误问题解决
Jul 29 Python
Python短信轰炸的代码
Mar 25 Python
python3爬虫中多线程进行解锁操作实例
Nov 25 Python
解决pytorch下出现multi-target not supported at的一种可能原因
Feb 06 Python
Jupyter Notebook 如何修改字体和大小以及更改字体样式
Jun 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
Windows下XDebug 手工配置与使用说明
2010/07/11 PHP
jquery isEmptyObject判断是否为空对象的函数
2011/02/14 Javascript
基于jquery的跟随屏幕滚动代码
2012/07/24 Javascript
jQuery 和 CSS 的文本特效插件集锦
2014/12/12 Javascript
javascript面向对象之this关键词用法分析
2015/01/13 Javascript
javascript中sort()的用法实例分析
2015/01/30 Javascript
jQuery模拟360浏览器切屏效果幻灯片(附demo源码下载)
2016/01/29 Javascript
第七章之菜单按钮图标组件
2016/04/25 Javascript
前端微信支付js代码
2016/07/25 Javascript
微信小程序调用PHP后台接口 解析纯html文本
2017/06/13 Javascript
详解vue-cli项目中用json-sever搭建mock服务器
2017/11/02 Javascript
js中int和string数据类型互相转化实例
2019/01/16 Javascript
详解bootstrap-fileinput文件上传控件的亲身实践
2019/03/21 Javascript
layui 富文本图片上传接口与普通按钮 文件上传接口的例子
2019/09/23 Javascript
Vue+Element自定义纵向表格表头教程
2020/10/26 Javascript
[02:32]“虐狗”镜头慎点 2016国际邀请赛中国区预选赛现场玩家采访
2016/06/28 DOTA
python使用append合并两个数组的方法
2015/04/28 Python
Python栈算法的实现与简单应用示例
2017/11/01 Python
python 打印直角三角形,等边三角形,菱形,正方形的代码
2017/11/21 Python
VTK与Python实现机械臂三维模型可视化详解
2017/12/13 Python
对python抓取需要登录网站数据的方法详解
2018/05/21 Python
python: 判断tuple、list、dict是否为空的方法
2018/10/22 Python
Selenium chrome配置代理Python版的方法
2018/11/29 Python
基于Python打造账号共享浏览器功能
2019/05/30 Python
线程安全及Python中的GIL原理分析
2019/10/29 Python
Python使用socket模块实现简单tcp通信
2020/08/18 Python
HTML5中的postMessage API基本使用教程
2016/05/20 HTML / CSS
美国顶级户外凉鞋品牌:Chacos
2017/03/27 全球购物
Craghoppers德国官网:户外和旅行服装
2020/02/14 全球购物
材料加工工程求职信
2014/02/19 职场文书
竞聘书怎么写,如何写?
2014/03/31 职场文书
植物生产学专业求职信
2014/08/08 职场文书
2014年学习厉行节约反对浪费思想汇报
2014/09/10 职场文书
初三英语教学反思
2016/02/15 职场文书
解决MultipartFile.transferTo(dest) 报FileNotFoundExcep的问题
2021/07/01 Java/Android
Java设计模式之代理模式
2022/04/22 Java/Android