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 相关文章推荐
下载给定网页上图片的方法
Feb 18 Python
Python引用(import)文件夹下的py文件的方法
Aug 26 Python
浅析Python中的序列化存储的方法
Apr 28 Python
Python安装第三方库的3种方法
Jun 21 Python
python使用str & repr转换字符串
Oct 13 Python
Python文本相似性计算之编辑距离详解
Nov 28 Python
pyQt4实现俄罗斯方块游戏
Jun 26 Python
Python3中在Anaconda环境下安装basemap包
Oct 21 Python
python 将大文件切分为多个小文件的实例
Jan 14 Python
eclipse创建python项目步骤详解
May 10 Python
python系统指定文件的查找只输出目录下所有文件及文件夹
Jan 19 Python
Python Django2 model 查询介绍(条件、范围、模糊查询)
Mar 16 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中使用$_REQUEST需要注意的一个问题
2013/05/02 PHP
php中HTTP_REFERER函数用法实例
2014/11/21 PHP
php绘制圆形的方法
2015/01/24 PHP
php 使用curl模拟登录人人(校内)网的简单实例
2016/06/06 PHP
php原生数据库分页的代码实例
2019/02/18 PHP
Thinkphp5.0 框架的请求方式与响应方式分析
2019/10/14 PHP
php操作redis数据库常见方法实例总结
2020/02/20 PHP
翻译整理的jQuery使用查询手册
2007/03/07 Javascript
圣诞节Merry Christmas给博客添加浪漫的下雪效果基于jquery实现
2012/12/27 Javascript
基于socket.io+express实现多房间聊天
2016/03/17 Javascript
jQuery Dialog 取消右上角删除按钮事件
2016/09/07 Javascript
loading动画特效小结
2017/01/22 Javascript
express框架实现基于Websocket建立的简易聊天室
2017/08/10 Javascript
详解ESLint在Vue中的使用小结
2018/10/15 Javascript
Vue使用预渲染代替SSR的方法
2020/07/02 Javascript
javascript递归函数定义和用法示例分析
2020/07/22 Javascript
vue cli3.0打包上线静态资源找不到路径的解决操作
2020/08/03 Javascript
如何解决django配置settings时遇到Could not import settings 'conf.local'
2014/11/18 Python
python学习笔记之调用eval函数出现invalid syntax错误问题
2015/10/18 Python
Python爬虫信息输入及页面的切换方法
2018/05/11 Python
python topN 取最大的N个数或最小的N个数方法
2018/06/04 Python
Flask之flask-script模块使用
2018/07/26 Python
基于python实现聊天室程序
2018/07/27 Python
python使用Matplotlib绘制分段函数
2018/09/25 Python
Python调用百度根据经纬度查询地址的示例代码
2019/07/07 Python
在pytorch中查看可训练参数的例子
2019/08/18 Python
简单了解为什么python函数后有多个括号
2019/12/19 Python
Keras-多输入多输出实例(多任务)
2020/06/22 Python
用gpu训练好的神经网络,用tensorflow-cpu跑出错的原因及解决方案
2021/03/03 Python
iPhoneX安全区域(Safe Area)底部小黑条在微信小程序和H5的屏幕适配
2020/04/08 HTML / CSS
中国一家综合的外贸B2C电子商务网站:DealeXtreme(DX)
2020/03/10 全球购物
亚洲最大的运动鞋寄售店:KicksCrew
2020/11/26 全球购物
暑假社会实践证明格式
2014/10/28 职场文书
2019商业计划书格式、范文
2019/04/24 职场文书
高考升学宴主持词
2019/06/21 职场文书
Go 语言下基于Redis分布式锁的实现方式
2021/06/28 Golang