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爬虫之抓取糗事百科代码分享
Nov 06 Python
python中快速进行多个字符替换的方法小结
Dec 15 Python
python中numpy.zeros(np.zeros)的使用方法
Nov 07 Python
Python获取当前函数名称方法实例分享
Jan 18 Python
Python多图片合并PDF的方法
Jan 03 Python
Python数据类型之列表和元组的方法实例详解
Jul 08 Python
Python爬虫实现的根据分类爬取豆瓣电影信息功能示例
Sep 15 Python
python 实现快速生成连续、随机字母列表
Nov 28 Python
对Tensorflow中tensorboard日志的生成与显示详解
Feb 04 Python
python3 logging日志封装实例
Apr 08 Python
Python CategoricalDtype自定义排序实现原理解析
Sep 11 Python
Python如何使用logging为Flask增加logid
Mar 30 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
php mssql扩展SQL查询中文字段名解决方法
2012/10/15 PHP
解析在PHP中使用mysqli扩展库对mysql的操作
2013/07/03 PHP
php中instanceof 与 is_a()区别分析
2015/03/03 PHP
服务器安全设置的几个注册表设置
2007/07/28 Javascript
JavaScript中的null和undefined区别介绍
2015/01/01 Javascript
深入解读JavaScript中的Hoisting机制
2015/08/12 Javascript
JavaScript验证Email(3种方法)
2015/09/21 Javascript
jQuery1.9.1源码分析系列(十六)ajax之ajax框架
2015/12/04 Javascript
AngularJS基础 ng-include 指令简单示例
2016/08/01 Javascript
详解webpack进阶之插件篇
2017/07/06 Javascript
微信JSSDK调用微信扫一扫功能的方法
2017/07/25 Javascript
three.js加载obj模型的实例代码
2017/11/10 Javascript
实现jquery放大镜的两种方法
2018/02/22 jQuery
详解vue填坑之解决部分浏览器不支持pushState方法
2018/07/12 Javascript
微信小程序之侧边栏滑动实现过程解析(附完整源码)
2019/08/23 Javascript
利用JS响应式修改vue实现页面的input值
2019/09/02 Javascript
JS中的const命令你真懂它吗
2020/03/08 Javascript
vue+canvas实现拼图小游戏
2020/09/18 Javascript
[33:39]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第二局
2016/02/27 DOTA
Python实现的HTTP并发测试完整示例
2020/04/23 Python
Python判断某个用户对某个文件的权限
2016/10/13 Python
Python常用算法学习基础教程
2017/04/13 Python
python中安装Scrapy模块依赖包汇总
2017/07/02 Python
《Python学习手册》学习总结
2018/01/17 Python
对Python3中的input函数详解
2018/04/22 Python
超实用的 30 段 Python 案例
2019/10/10 Python
Python解析多帧dicom数据详解
2020/01/13 Python
Python sql注入 过滤字符串的非法字符实例
2020/04/03 Python
python实现扫雷游戏的示例
2020/10/20 Python
纯CSS3实现的8种Loading动画效果
2014/07/05 HTML / CSS
Net Remoting把服务器端激活两种模式
2014/01/22 面试题
英语翻译系毕业生求职信
2013/09/29 职场文书
酒店营销策划方案
2014/02/07 职场文书
幼儿园六一儿童节活动总结
2015/02/10 职场文书
捐书仪式主持词
2015/07/04 职场文书
继承Win10缺点!教你关闭Win11烦人的网络搜索
2021/11/23 数码科技