__call__

Python中有一个有趣的语法,只要定义类型的时候,实现__call__函数,这个类型就成为可调用的。

换句话说,我们可以把这个类型的对象当作函数来使用,相当于 重载了括号运算符。

  1. class g_dpm(object):
  2. def __init__(self, g):
  3. self.g = g
  4. def __call__(self, t):
  5. return (self.g*t**2)/2

计算地球场景的时候,我们就可以令e_dpm = g_dpm(9.8),s = e_dpm(t)。

  1. class Animal(object):
  2. def __init__(self, name, legs):
  3. self.name = name
  4. self.legs = legs
  5. self.stomach = []
  6. def __call__(self,food):
  7. self.stomach.append(food)
  8. def poop(self):
  9. if len(self.stomach) > 0:
  10. return self.stomach.pop(0)
  11. def __str__(self):
  12. return 'A animal named %s' % (self.name)
  13. cow = Animal('king', 4)  #We make a cow
  14. dog = Animal('flopp', 4) #We can make many animals
  15. print 'We have 2 animales a cow name %s and dog named %s,both have %s legs' % (cow.name, dog.name, cow.legs)
  16. print cow  #here __str__ metod work
  17. #We give food to cow
  18. cow('gras')
  19. print cow.stomach
  20. #We give food to dog
  21. dog('bone')
  22. dog('beef')
  23. print dog.stomach
  24. #What comes inn most come out
  25. print cow.poop()
  26. print cow.stomach  #Empty stomach
    1. '''''-->output
    2. We have 2 animales a cow name king and dog named flopp,both have 4 legs
    3. A animal named king
    4. ['gras']
    5. ['bone', 'beef']
    6. gras
    7. []
    8. '''

python __call__ 函数的更多相关文章

  1. 通过 python的 __call__ 函数与元类 实现单例模式

    简单一句话,当一个类实现__call__方法时,这个类的实例就会变成可调用对象. 直接上测试代码 class ClassA: def __call__(self, *args, **kwargs): ...

  2. Python中的__init__()和__call__()函数

    Python中的__init__()和__call__()函数 在Python的class中有一些函数往往具有特殊的意义.__init__()和__call__()就是class很有用的两类特殊的函数 ...

  3. python iter函数用法

    iter函数用法简述 Python 3中关于iter(object[, sentinel)]方法有两个参数. 使用iter(object)这种形式比较常见. iter(object, sentinel ...

  4. Python locals() 函数

    Python locals() 函数  Python 内置函数 描述 locals() 函数会以字典类型返回当前位置的全部局部变量. 对于函数, 方法, lambda 函式, 类, 以及实现了 __c ...

  5. python基础,函数,面向对象,模块练习

    ---恢复内容开始--- python基础,函数,面向对象,模块练习 1,简述python中基本数据类型中表示False的数据有哪些? #  [] {} () None 0 2,位和字节的关系? # ...

  6. python常用函数拾零

    Python常用内置函数总结: 整理过程中参考了runoob网站中python内置函数的相关知识点,特此鸣谢!! 原文地址:http://www.runoob.com/python/python-bu ...

  7. Python __call__详解

    可以调用的对象 关于 __call__ 方法,不得不先提到一个概念,就是可调用对象(callable),我们平时自定义的函数.内置函数和类都属于可调用对象,但凡是可以把一对括号()应用到某个对象身上都 ...

  8. python的函数

    函数一词起源于数学,但是在编程中的函数和数学中的有很大不同.编程中的函数式组织好的,可重复使用的,用于实现单一功能或相关联功能的代码块. 我们在学习过程中已经使用过一些python内建的函数,如pri ...

  9. python strip()函数 介绍

    python strip()函数 介绍,需要的朋友可以参考一下   函数原型 声明:s为字符串,rm为要删除的字符序列 s.strip(rm)        删除s字符串中开头.结尾处,位于 rm删除 ...

随机推荐

  1. shell习题第5题:批量更改文件后缀名

    [题目要求] 找到123/目录下所有后缀名为.txt的文件 1. 批量修改.txt为.txt.bak 2. 把所有.bak文件打包压缩为123.tar.gz 3. 批量还原文件的名字,即把增加的.ba ...

  2. 学在Java之前

    java基础 下载JDK JDK(Java Development Kit  Java开发工具包) 官方网址: www.oracle.com                参阅oracle.html ...

  3. 获取文件属性“详细信息” - StringFileInfo

    0.什么是StringFileInfo1.获取方法2.示例代码 参考链接: 1.MS docs - GetFileVersionInfoA:https://docs.microsoft.com/zh- ...

  4. 双端队列 ADT接口 链表实现

    Deque ADT接口 DEQUEUE.h: #include <stdlib.h> #include "Item.h" typedef struct DEQUEUEn ...

  5. 5.11-笨办法学python-习题13(argv)

    参考书目<learn python the hard way>——练习13 这个练习在Python上练了很多次,都运行不成功.在网上查了很多资料,发现很多人在练第13个练习的时候都有问题, ...

  6. python2.7入门---GUI编程(Tkinter)

        Python 提供了多个图形开发界面的库,几个常用 Python GUI 库如下: Tkinter: Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 . ...

  7. 20155226 2016-2017-2 《Java程序设计》第10周学习总结

    20155226 2016-2017-2 <Java程序设计>第10周学习总结 教材学习内容总结 网络编程 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据. 程序员所作的事情 ...

  8. 20155325《Java程序设计》实验一(Java开发环境的熟悉)实验报告

    实验一Java开发环境的熟悉-1 提交 Linux或Window或macOS中命令行下运行Java的截图 运行结果包含自己学号等证明自己身份的信息 实验一Java开发环境的熟悉-2 提交 Linux或 ...

  9. 20155332 2016-2017-2《Java程序设计》第1周学习总结

    # 20155332 2016-2017-2<Java程序设计>第1周学习总结 教材学习内容总结 课本提问 1.Java平台概论:为什么需要Java程序设计语言? 2.Java平台概论:版 ...

  10. 《Java 程序设计》课堂实践项目-命令行参数

    <Java 程序设计>课堂实践项目 课后学习总结 目录 改变 命令行参数实验要求 课堂实践成果 课后思考 改变 修改了博客整体布局,过去就贴个代码贴个图很草率,这次布局和内容都有修改.加了 ...