Python 实例对象

实例对象唯一可用的操作就是属性引用。有两种有效的属性名:

第一种称作数据属性。相当于C++的数据成员。

不同之处在于Python的数据属性不需要声明,第一次使用时会生出,如同Python的局部变量。

第二种为实例对象所接受的引用属性是方法。方法是属于一个对象的函数。

Python中,方法不止是类实例所独有:其它类型的对象也可有方法。例如,链表对象有appendinsertremovesort等等方法

实例对象的有效名称依赖于它的类。按照定义,类中所有(用户定义)的函数对象对应它的实例中的方法。所以在我们的例子中,x..f是一个有效的方法引用,因为MyClass.f是一个函数。但x.i不是,因为MyClass.i是不是函数。不过x.fMyClass.f不同--它是一个  方法对象,不是一个函数对象。


为什么要叫方法对象?

这种方法不是一定要直接调用,他可以存储起来以后调用:

xf = x.f
while True:
    print xf()
方法的特别之处在于实例对象作为函数的第一个参数传给了函数。在我们的例子中,调用x.f() 相当于MyClass.f(x)

如果你还是不理解方法的工作原理,了解一下它的实现也许有帮助。引用非数据属性的实例属性时,会搜索它的类。如果这个命名确认为一个有效的函数对象类属性,就会将实例对象和函数对象封装进一个抽象对象:这就是方法对象。以一个参数列表调用方法对象时,它被重新拆封,用实例对象和原始的参数列表构造一个新的参数列表,然后函数对象调用这个新的参数列表。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值