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中list循环语句用法实例
Nov 10 Python
python创建关联数组(字典)的方法
May 04 Python
深入理解python多进程编程
Jun 12 Python
Python基于pillow判断图片完整性的方法
Sep 18 Python
Python+OpenCV让电脑帮你玩微信跳一跳
Jan 04 Python
python机器学习理论与实战(一)K近邻法
Jan 28 Python
对pandas的行列名更改与数据选择详解
Nov 12 Python
自适应线性神经网络Adaline的python实现详解
Sep 30 Python
python实现拼图小游戏
Feb 22 Python
Python 实现将numpy中的nan和inf,nan替换成对应的均值
Jun 08 Python
OpenCV图片漫画效果的实现示例
Aug 18 Python
python获取时间戳的实现示例(10位和13位)
Sep 23 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读取网页文件内容的实现代码(fopen,curl等)
2011/06/23 PHP
PHP-FPM运行状态的实时查看及监控详解
2016/11/18 PHP
php curl批处理实现可控并发异步操作示例
2018/05/09 PHP
详解PHP 二维数组排序保持键名不变
2019/03/06 PHP
JavaScript 类的定义和引用 JavaScript高级培训 自定义对象
2010/04/27 Javascript
js分页代码分享
2014/04/28 Javascript
JavaScript通过prototype给对象定义属性用法实例
2015/03/23 Javascript
js实现键盘Enter键提交表单的方法
2015/05/27 Javascript
用js实现简单算法的实例代码
2016/09/24 Javascript
vue中将网页打印成pdf实例代码
2017/06/15 Javascript
jQuery Ajax 实现分页 kkpager插件实例代码
2017/08/10 jQuery
Vue 中批量下载文件并打包的示例代码
2017/11/20 Javascript
利用ECharts.js画K线图的方法示例
2018/01/10 Javascript
浅谈React高阶组件
2018/03/28 Javascript
taro小程序添加骨架屏的实现代码
2019/11/15 Javascript
python错误:AttributeError: 'module' object has no attribute 'setdefaultencoding'问题的解决方法
2014/08/22 Python
python实现给字典添加条目的方法
2014/09/25 Python
Python 判断 有向图 是否有环的实例讲解
2018/02/01 Python
python traceback捕获并打印异常的方法
2018/08/31 Python
Python+OpenCV采集本地摄像头的视频
2019/04/25 Python
实例详解python函数的对象、函数嵌套、名称空间和作用域
2019/05/31 Python
python调试神器PySnooper的使用
2019/07/03 Python
python中对_init_的理解及实例解析
2019/10/11 Python
使用Python爬虫库requests发送表单数据和JSON数据
2020/01/25 Python
Python如何解除一个装饰器
2020/08/07 Python
CSS3 translate导致字体模糊的实例代码
2019/08/30 HTML / CSS
Nordgreen台湾官网:极简北欧设计手表
2019/08/21 全球购物
Ajax主要包含了哪些技术
2014/06/12 面试题
师范应届生语文教师求职信
2013/10/29 职场文书
学生处主任岗位职责
2013/12/01 职场文书
《我不是最弱小的》教学反思
2014/02/23 职场文书
《北京的春节》教学反思
2014/04/07 职场文书
化工专业求职信
2014/07/01 职场文书
小学教师自我剖析材料
2014/09/29 职场文书
群众路线个人自我剖析材料
2014/10/07 职场文书
Python开发五子棋小游戏
2022/05/02 Python