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 当前全局变量和入口参数的所有属性
Jul 01 Python
python自动登录12306并自动点击验证码完成登录的实现源代码
Apr 25 Python
python2与python3中关于对NaN类型数据的判断和转换方法
Oct 30 Python
Python 实现子类获取父类的类成员方法
Jan 11 Python
Python+PyQT5的子线程更新UI界面的实例
Jun 14 Python
python如何实现从视频中提取每秒图片
Oct 22 Python
关于pycharm中pip版本10.0无法使用的解决办法
Oct 10 Python
python pymysql链接数据库查询结果转为Dataframe实例
Jun 05 Python
python + selenium 刷B站播放量的实例代码
Jun 12 Python
基于django2.2连oracle11g解决版本冲突的问题
Jul 02 Python
浅析Python 条件控制语句
Jul 15 Python
python读取mat文件生成h5文件的实现
Jul 15 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
深入解析yii权限分级式访问控制的实现(非RBAC法)
2013/06/13 PHP
php实现将wav文件转换成图像文件并在页面中显示的方法
2015/04/21 PHP
网页的标准,IMG不支持onload标签怎么办
2006/06/29 Javascript
用js实现的一个Flash滚动轮换显示图片代码生成器
2007/03/14 Javascript
Jquery中的CheckBox、RadioButton、DropDownList的取值赋值实现代码
2011/10/12 Javascript
关于js日期转化为毫秒数“节省20%的效率和和节省9个字符“问题
2012/03/01 Javascript
NodeJS学习笔记之网络编程
2014/08/03 NodeJs
jquery实现的横向二级导航效果代码
2015/08/26 Javascript
js如何改变文章的字体大小
2016/01/08 Javascript
你所未知的3种Node.js代码优化方式
2016/02/25 Javascript
JS实现物体带缓冲的间歇运动效果示例
2016/12/22 Javascript
微信小程序动态添加分享数据
2017/06/14 Javascript
React Native中的RefreshContorl下拉刷新使用
2017/10/09 Javascript
使用js实现将后台传入的json数据放在前台显示
2018/08/06 Javascript
最适应的vue.js的form提交涉及多种插件【推荐】
2018/08/27 Javascript
浅谈javascript中的prototype和__proto__的理解
2019/04/07 Javascript
js中Function引用类型常见有用的方法和属性详解
2019/12/11 Javascript
[03:36]2014DOTA2 TI小组赛综述 八强诞生进军钥匙球馆
2014/07/15 DOTA
Python实现多线程下载文件的代码实例
2014/06/01 Python
利用python、tensorflow、opencv、pyqt5实现人脸实时签到系统
2019/09/25 Python
python从zip中删除指定后缀文件(推荐)
2019/12/05 Python
Python3实现建造者模式的示例代码
2020/06/28 Python
5分钟快速掌握Python定时任务框架的实现
2021/01/26 Python
使用HTML5做的导航条详细步骤
2020/10/19 HTML / CSS
html5使用window.postMessage进行跨域实现数据交互的一次实战
2021/02/24 HTML / CSS
英国第一蛋白粉品牌:Myprotein
2016/09/14 全球购物
Oracle性能调优原则
2012/05/03 面试题
服装机修工岗位职责
2013/12/26 职场文书
财务部经理岗位职责
2014/02/03 职场文书
农村党员对照检查材料
2014/09/24 职场文书
城管年度个人总结
2015/02/28 职场文书
二婚主持词
2015/06/30 职场文书
python 实现图与图之间的间距调整subplots_adjust
2021/05/21 Python
SQL实现LeetCode(175.联合两表)
2021/08/04 MySQL
Mysql中常用的join连接方式
2022/05/11 MySQL
一篇文章带你掌握SQLite3基本用法
2022/06/14 数据库