python面向对象(二)

本文介绍了Python中动态绑定的概念,包括如何动态地为实例绑定属性和方法,并解释了这些绑定是如何仅影响当前实例而不影响其他实例的。此外还讨论了如何通过类来实现所有实例的绑定,以及使用__slots__来限制动态绑定属性的方法。

动态绑定 

# python动态绑定,只对当前操作的实例起作用,不影响类的其他实例

class A(object):
    pass

# 动态绑定属性
a = A()
a.name = 'Tom'
print(a.name) # Tom

# 动态绑定方法
from types import MethodType

def set_name(self, name):
    self.name = name

a.set_name = MethodType(set_name, a)
a.set_name('Jerry')
print(a.name) # Jerry

# 如果要给所有实例绑定的话,可直接绑定到类
A.set_name = set_name

# 限制动态绑定属性,使用__slots__特殊变量,对于继承的子类__slots__不会起作用
class A(object):
    __slots__ = (name, age)#只允许动态绑定名称为name或age的属性

 

转载于:https://my.oschina.net/xiaoerit/blog/1574934

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值