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计算三角函数之acos()方法的使用
May 15 Python
Python使用爬虫抓取美女图片并保存到本地的方法【测试可用】
Aug 30 Python
Python模拟浏览器上传文件脚本的方法(Multipart/form-data格式)
Oct 22 Python
python获取指定日期范围内的每一天,每个月,每季度的方法
Aug 08 Python
python绘制动态曲线教程
Feb 24 Python
对python中arange()和linspace()的区别说明
May 03 Python
golang/python实现归并排序实例代码
Aug 30 Python
python如何使用腾讯云发送短信
Sep 17 Python
Python3.8.2安装包及安装教程图文详解(附安装包)
Nov 28 Python
python Timer 类使用介绍
Dec 28 Python
python实现三种随机请求头方式
Jan 05 Python
python3.7.2 tkinter entry框限定输入数字的操作
May 22 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中路径问题的解决方案
2006/10/09 PHP
php file_exists 检查文件或目录是否存在的函数
2010/05/10 PHP
PHP 9 大缓存技术总结
2015/09/17 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
2018/02/06 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
2018/02/23 PHP
Thinkphp5.0框架视图view的模板布局用法分析
2019/10/12 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
2019/12/25 PHP
JQuery 将元素显示在屏幕的中央的代码
2010/02/27 Javascript
httpclient模拟登陆具体实现(使用js设置cookie)
2013/12/11 Javascript
浅谈js中的引用和复制(传值和传址)
2016/09/18 Javascript
原生js编写焦点图效果
2016/12/08 Javascript
基于Vue的移动端图片裁剪组件功能
2017/11/28 Javascript
VUE中使用MUI方法
2019/02/12 Javascript
jQuery实现简易聊天框
2020/02/08 jQuery
vue-video-player 解决微信自动全屏播放问题(横竖屏导致样式错乱问题)
2020/02/25 Javascript
vue+element实现动态加载表单
2020/12/13 Vue.js
[04:28]2014DOTA2国际邀请赛 采访小兔子LGD挺进钥匙体育馆
2014/07/14 DOTA
[01:30:55]VG vs Mineski Supermajor 败者组 BO3 第三场 6.6
2018/06/07 DOTA
Python BeautifulSoup中文乱码问题的2种解决方法
2014/04/22 Python
Python中的测试模块unittest和doctest的使用教程
2015/04/14 Python
python数据类型_元组、字典常用操作方法(介绍)
2017/05/30 Python
python事件驱动event实现详解
2018/11/21 Python
Python 存储字符串时节省空间的方法
2019/04/23 Python
python实现共轭梯度法
2019/07/03 Python
Python占用的内存优化教程
2019/07/28 Python
Python基于codecs模块实现文件读写案例解析
2020/05/11 Python
Python+PyQt5+MySQL实现天气管理系统
2020/06/16 Python
HTML5中的强制下载属性download使用实例解析
2016/05/12 HTML / CSS
使用canvas生成含有微信头像的邀请海报没有微信头像问题
2019/10/29 HTML / CSS
一套Java笔试题
2016/08/20 面试题
EJB发布WEB服务一般步骤
2012/10/31 面试题
车间工艺员岗位职责
2013/12/09 职场文书
工作失职检讨书范文
2014/01/16 职场文书
大学生社区义工服务心得体会
2016/01/22 职场文书
vue使用element-ui按需引入
2022/05/20 Vue.js