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实现倒计时的示例
Feb 14 Python
朴素贝叶斯算法的python实现方法
Nov 18 Python
Python通过正则表达式选取callback的方法
Jul 18 Python
python开发之for循环操作实例详解
Nov 12 Python
Python编程flask使用页面模版的方法
Dec 28 Python
python装饰器简介---这一篇也许就够了(推荐)
Apr 01 Python
Python使用Paramiko控制liunx第三方库
May 20 Python
python logging 重复写日志问题解决办法详解
Aug 04 Python
python 模拟登陆163邮箱
Dec 15 Python
Pycharm 解决自动格式化冲突的设置操作
Jan 15 Python
VSCODE配置Markdown及Markdown基础语法详解
Jan 19 Python
如何获取numpy array前N个最大值
May 14 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判断输入不超过mysql的varchar字段的长度范围
2011/06/24 PHP
探讨如何在php168_cms中提取验证码
2013/06/08 PHP
Yii实现多按钮保存与提交的方法
2014/12/03 PHP
php实现的IMEI限制的短信验证码发送类
2015/05/05 PHP
PHP策略模式定义与用法示例
2017/07/27 PHP
js跨域问题之跨域iframe自适应大小实现代码
2010/07/17 Javascript
JQuery扩展插件Validate—6 radio、checkbox、select的验证
2011/09/05 Javascript
Javascript浅谈之this
2013/12/17 Javascript
JavaScript将数据转换成整数的方法
2014/01/04 Javascript
详解JavaScript的策略模式编程
2015/06/24 Javascript
浅析javascript函数表达式
2016/02/10 Javascript
js表单元素checked、radio被选中的几种方法(详解)
2016/08/22 Javascript
微信公众号 客服接口的开发实例详解
2016/09/28 Javascript
Bootstrap Navbar Component实现响应式导航
2016/10/08 Javascript
jQuery中复合选择器简单用法示例
2018/03/31 jQuery
学习Vue组件实例
2018/04/28 Javascript
vue 组件的封装之基于axios的ajax请求方法
2018/08/11 Javascript
10个最受欢迎的 JavaScript框架(推荐)
2019/04/24 Javascript
深入解读VUE中的异步渲染的实现
2020/06/19 Javascript
对pandas的dataframe绘图并保存的实现方法
2017/08/05 Python
python对绑定事件的鼠标、按键的判断实例
2019/07/17 Python
Python编程中类与类的关系详解
2019/08/08 Python
Pandas-Cookbook 时间戳处理方式
2019/12/07 Python
浅谈Python __init__.py的作用
2020/10/28 Python
用Python实现定时备份Mongodb数据并上传到FTP服务器
2021/01/27 Python
巧克力领导品牌瑞士莲美国官网:Lindt Chocolate美国
2016/08/25 全球购物
英国皇家邮政海外旗舰店:Royal Mail
2018/02/21 全球购物
乌克兰在线药房:Аптека24
2019/10/30 全球购物
结构工程研究生求职信
2013/10/13 职场文书
质检员岗位职责
2013/12/17 职场文书
小学生演讲稿
2014/01/12 职场文书
领导干部群众路线教育实践活动剖析材料
2014/10/10 职场文书
党的群众路线教育实践活动组织生活会发言材料
2014/10/17 职场文书
公司2014年度工作总结
2014/12/10 职场文书
2015年乡镇财政工作总结
2015/05/19 职场文书
python解析json数据
2022/04/29 Python