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的Twisted框架中Deferred对象的用法
May 25 Python
python3实现暴力穷举博客园密码
Jun 19 Python
详解配置Django的Celery异步之路踩坑
Nov 25 Python
python实现统计文本中单词出现的频率详解
May 20 Python
使用OpenCV实现仿射变换—平移功能
Aug 29 Python
详解Python3 pandas.merge用法
Sep 05 Python
用Python画一个LinkinPark的logo代码实例
Sep 10 Python
基于python+selenium的二次封装的实现
Jan 06 Python
pytorch方法测试——激活函数(ReLU)详解
Jan 15 Python
tensorflow实现读取模型中保存的值 tf.train.NewCheckpointReader
Feb 10 Python
python 生成器需注意的小问题
Sep 29 Python
Python数据可视化之基于pyecharts实现的地理图表的绘制
Jun 10 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生成EAN_13标准条形码实例
2013/11/13 PHP
php多次include后导致全局变量global失效的解决方法
2015/02/28 PHP
PHP随机生成唯一HASH值自定义函数
2015/04/20 PHP
WordPress开发中短代码的实现及相关函数使用技巧
2016/01/05 PHP
PHP预定义变量9大超全局数组用法详解
2016/04/23 PHP
PHP构造函数与析构函数用法示例
2016/09/28 PHP
一个可以兼容IE FF的加为首页与加入收藏实现代码
2009/11/02 Javascript
ExtJs的Date格式字符代码
2010/12/30 Javascript
jQuery 拖动层(在可视区域范围内)
2012/05/24 Javascript
使用js声明数组,对象在jsp页面中(获得ajax得到json数据)
2013/11/05 Javascript
js获取电脑分辨率的思路及操作
2013/11/22 Javascript
nodejs文件操作模块FS(File System)常用函数简明总结
2014/06/05 NodeJs
JavaScript判断前缀、后缀是否是空格的方法
2015/04/15 Javascript
浅谈JavaScript事件绑定的常用方法及其优缺点分析
2016/11/01 Javascript
详解Node全局变量global模块
2017/09/28 Javascript
使用JavaScript保存文本文件到本地的两种方法
2019/01/22 Javascript
精确查找PHP WEBSHELL木马的方法(1)
2011/04/12 Python
python 实现堆排序算法代码
2012/06/05 Python
初步剖析C语言编程中的结构体
2016/01/16 Python
Python实现的朴素贝叶斯分类器示例
2018/01/06 Python
Request的中断和ErrorHandler实例解析
2018/02/12 Python
TensorFlow的权值更新方法
2018/06/14 Python
Python对切片命名的实现方法
2018/10/16 Python
在python环境下运用kafka对数据进行实时传输的方法
2018/12/27 Python
使用Python爬取小姐姐图片(beautifulsoup法)
2021/02/11 Python
聊聊python在linux下与windows下导入模块的区别说明
2021/03/03 Python
西班牙伏林航空公司:Vueling
2016/08/05 全球购物
美国演唱会订票网站:Ticketmaster美国
2017/10/05 全球购物
Skyscanner波兰:廉价航班
2017/11/07 全球购物
美国最大点评网站:Yelp
2018/02/14 全球购物
迪奥官网:Dior.com
2018/12/04 全球购物
四风个人对照检查材料思想汇报
2014/09/25 职场文书
党员违纪检讨书怎么写
2014/11/01 职场文书
教你如何用Python实现人脸识别(含源代码)
2021/06/23 Python
css3新特性的应用示例分析
2022/03/16 HTML / CSS
python playwrigh框架入门安装使用
2022/07/23 Python