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使用Paramiko模块编写脚本进行远程服务器操作
May 05 Python
python发送邮件功能实现代码
Jul 15 Python
Python使用plotly绘制数据图表的方法
Jul 18 Python
python用户管理系统的实例讲解
Dec 23 Python
Python遍历某目录下的所有文件夹与文件路径
Mar 15 Python
浅谈PYTHON 关于文件的操作
Mar 19 Python
python实现统计代码行数的小工具
Sep 19 Python
Python线程指南分享
Nov 19 Python
Python装饰器原理与基本用法分析
Jan 07 Python
python3利用Axes3D库画3D模型图
Mar 25 Python
python导入库的具体方法
Jun 18 Python
python如何实现递归转非递归
Feb 25 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编码转换
2012/11/05 PHP
PHP IDE phpstorm 常用快捷键
2015/05/18 PHP
PHP抓取远程图片(含不带后缀的)教程详解
2016/10/21 PHP
PHP实现的超长文本分页显示功能示例
2018/06/04 PHP
ThinkPHP3.2框架自带分页功能实现方法示例
2019/05/13 PHP
php中array_fill函数的实例用法
2021/03/02 PHP
JavaScript 组件之旅(二)编码实现和算法
2009/10/28 Javascript
Javascript 网页水印(非图片水印)实现代码
2010/03/01 Javascript
JavaScript/jQuery 表单美化插件小结
2012/02/14 Javascript
下拉列表选择项的选中在不同浏览器中的兼容性问题探讨
2013/09/18 Javascript
Node.js 学习笔记之简介、安装及配置
2015/03/03 Javascript
jQuery实现动态表单验证时文本框抖动效果完整实例
2015/08/21 Javascript
Bootstrap select下拉联动(jQuery cxselect)
2017/01/04 Javascript
vue指令以及dom操作详解
2017/03/04 Javascript
bootstrap时间插件daterangepicker使用详解
2017/10/19 Javascript
vue表单自定义校验规则介绍
2018/08/28 Javascript
vue2.0 如何在hash模式下实现微信分享
2019/01/22 Javascript
详解单页面路由工程使用微信分享及二次分享解决方案
2019/02/22 Javascript
微信小程序如何实现在线客服功能
2019/10/16 Javascript
BootstrapValidator验证用户名已存在(ajax)
2019/11/08 Javascript
详解python的webrtc库实现语音端点检测
2017/05/31 Python
Python2.7编程中SQLite3基本操作方法示例
2017/08/09 Python
python selenium 弹出框处理的实现
2019/02/26 Python
python实现对列表中的元素进行倒序打印
2019/11/23 Python
Python递归及尾递归优化操作实例分析
2020/02/01 Python
Python 模拟生成动态产生验证码图片的方法
2020/02/01 Python
Django+Uwsgi+Nginx如何实现生产环境部署
2020/07/31 Python
详解background属性的8个属性值(面试题)
2020/11/02 HTML / CSS
前端canvas水印快速制作(附完整代码)
2019/09/19 HTML / CSS
金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)-> (一千零一拾一元整)输出
2015/05/29 面试题
国培计划培训感言
2014/03/11 职场文书
会计电算化专业求职信
2014/06/10 职场文书
动漫设计与制作专业推荐信
2014/07/07 职场文书
"9.18"国耻日演讲稿范文
2014/09/14 职场文书
2014年党员个人剖析材料
2014/10/08 职场文书
详解Java实现设计模式之责任链模式
2021/06/23 Java/Android