python 函数是可调用对象和特殊方法__call__
2017-03-11 13:45
435 查看
在Python中,函数其实是一个对象:
由于函数f可以被调用,所以函数f被称为可调用对象。一个类实例也可以变成一个可调用对象,只需要实现一个特殊方法__call__()。
我们把 Person 类变成一个可调用对象:
class Person(object): def __init__(self, name, gender): self.name = name self.gender = gender def __call__(self, friend): print 'My name is %s...' % self.name print 'My friend is %s...' % friend
现在可以对 Person 实例直接调用:
>>> p = Person('Bob', 'male') >>> p('Tim') My name is Bob... My friend is Tim...单看 p('Tim') 你无法确定 p 是一个函数还是一个类实例,所以,在Python中,函数也是对象,对象和函数的区别并不显著
相关文章推荐
- 根据字符串名称动态调用Python的函数和对象方法
- python同一对象的方法(或函数)没有权利调用该对象的其他方法(或函数)
- Python可调用对象__call__方法的用法分析
- Python 对象特殊方法:(二)对象可调用接口
- JavaScript学习--Item8 函数,方法,构造函数调用 标签: javascript构造函数面向对象函数call
- 分析函数调用关系图(call graph)的几种方法
- 分析函数调用关系图(call graph)的几种方法
- python __call__ 可调用对象
- 分析函数调用关系图(call graph)的几种方法
- 分析函数调用关系图(call graph)的几种方法
- 分析函数调用关系图(call graph)的几种方法
- 分析函数调用关系图(call graph)的几种方法
- javascript 函数调用的对象和方法
- 兼容IE和火狐JS父窗口调用iframe里面的对象、函数的方法
- 分析函数调用关系图(call graph)的几种方法
- python __call__ (可调用对象)
- 分析函数调用关系图(call graph)的几种方法
- 闰年(注:Scanner对象调用输入方法的特殊情况,害我调试半天 (╰_╯)#)
- 分析函数调用关系图(call graph)的几种方法
- 注册并发布一个xmlrpc远程对象(函数、类对象、客户端使用调用(对象.方法)格式)