动态绑定
# 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的属性