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列表推导式的使用方法
Nov 21 Python
python使用arp欺骗伪造网关的方法
Apr 24 Python
Python自动化运维和部署项目工具Fabric使用实例
Sep 18 Python
Python错误: SyntaxError: Non-ASCII character解决办法
Jun 08 Python
利用Python爬取微博数据生成词云图片实例代码
Aug 31 Python
利用Python批量提取Win10锁屏壁纸实战教程
Mar 27 Python
python实现合并两个排序的链表
Mar 03 Python
python实现文本进度条 程序进度条 加载进度条 单行刷新功能
Jul 03 Python
python 3.74 运行import numpy as np 报错lib\site-packages\numpy\__init__.py
Oct 06 Python
python plt可视化——打印特殊符号和制作图例代码
Apr 17 Python
python语言中有算法吗
Jun 16 Python
用python修改excel表某一列内容的操作方法
Jun 11 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的关于变量和日期处理的一些面试题目整理
2015/08/10 PHP
yii插入数据库防并发的简单代码
2017/05/27 PHP
让mayfish支持mysqli数据库驱动的实现方法
2010/05/22 Javascript
Extjs Gird 支持中文拼音排序实现代码
2013/04/15 Javascript
jquery实现漂浮在网页右侧的qq在线客服插件示例
2013/05/13 Javascript
jQuery插件Slider Revolution实现响应动画滑动图片切换效果
2015/06/05 Javascript
快速学习jQuery插件 Cookie插件使用方法
2015/12/01 Javascript
javascript瀑布流式图片懒加载实例解析与优化
2016/02/23 Javascript
JS函数的定义与调用方法推荐
2016/05/12 Javascript
easyui中combotree循环获取父节点至根节点并输出路径实现方法
2016/11/10 Javascript
多个上传文件用js验证文件的格式和大小的方法(推荐)
2017/03/09 Javascript
Angular项目从新建、打包到nginx部署全过程记录
2017/12/09 Javascript
使用Jenkins部署React项目的方法步骤
2019/03/11 Javascript
vue.js 打包时出现空白页和路径错误问题及解决方法
2019/06/26 Javascript
layui使用label标签的方法
2019/09/14 Javascript
JavaScript 禁止用户保存图片的实现代码
2020/04/28 Javascript
python实现在目录中查找指定文件的方法
2014/11/11 Python
Python中处理字符串之isalpha()方法的使用
2015/05/18 Python
Django 日志配置按日期滚动的方法
2019/01/31 Python
itchat-python搭建微信机器人(附示例)
2019/06/11 Python
Django框架创建项目的方法入门教程
2019/11/04 Python
浅谈opencv自动光学检测、目标分割和检测(连通区域和findContours)
2020/06/04 Python
基于Django集成CAS实现流程详解
2020/11/28 Python
HTML5中form如何关闭自动完成功能的方法
2018/07/02 HTML / CSS
吉力贝官方网站:Jelly Belly
2019/03/11 全球购物
Oracle的内存结构(Memory structures)
2015/06/10 面试题
高中美术教学反思
2014/01/19 职场文书
初三学习决心书
2014/03/11 职场文书
医学生求职自荐书
2014/06/12 职场文书
社区活动策划方案
2014/08/21 职场文书
小学生校园广播稿
2014/09/28 职场文书
党支部组织生活会整改方案
2014/09/30 职场文书
2014年就业工作总结
2014/11/26 职场文书
初中差生评语
2014/12/29 职场文书
2016秋季田径运动会广播稿
2015/12/21 职场文书
品德与社会教学反思
2016/02/24 职场文书