第14章 执行环境(1)

14.1 可调用对象

Python有4种可调用对象:函数、方法、类以及一些类的实例。记住这些对象的任何引用或者别名都是可调用的。

14.1.1 函数

内建函数(BIF)使用C/C++写的,编译过后放入Python解释器,然后把它们作为第一(内建)名称空间的一部分加载进系统。这些函数在_builtin_模块里,并作为_builtins_模块导入到解释器中。

用户定义的函数(UDF)通常是用Python写的,定义在模块的最高级,因此会作为全局名称空间的一部分(一旦创建好内建名称空间)装载到系统中。

从内部机制看,用户定义的函数是“函数”类型的。

>>> def myfunc():
... 	pass
... 
>>> type(myfunc)
<type 'function'>
>>> 

通过lambda来创建函数的对象除了没有命名之外,享有和用户定义函数相同的属性。

14.1.2 方法

内建方法(BIM)只有内建类型(built-in type,BIT)有内建方法(built-in Method,BIM).

用户定义的方法(UDM)包含在类定义之中,只是拥有标准函数的包装,仅有定义他们的类可以使用。UDM与类对象是关联的(非绑定方法),但是只能通过类的实例来调用(绑定方法)。无论UDM是否绑定,所有的UDM都是相同的类型——“实例方法”。

14.1.3 类

我们可以利用类的可调用性来创建实例。“调用”类的结果就是创建了实例,即大家所知道的实例化。程序员可以通过__init__()方法来自定义实例化过程。实例化调用的任何参数都会传入到构造器中。

14.1.4 类的实例

Python给类提供了名为__call__的特别方法,该方法允许程序员创建可调用的对象(实例)。

>>> class Class1(object):
... 	def __call__(self):
... 		print "Current is __call__ method"
... 		
>>> c = Class1()
>>> callable(c)
True
>>> c()
Current is __call__ method
>>> 

只有定义类的时候实现了__call__方法,类的实例才能成为可调用的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值