1、为实例临时绑定属性和方法
class Stuedent(object): # __slots__ = ('name',"age","set_age") pass s1 = Stuedent() # 为实例临时绑定属性 s1.name = "dsb" print(s1.name) # 为实例临时绑定方法 from types import MethodType def set_age(self,age): self.age = age s1.set_age = MethodType(set_age,s1) s1.set_age(20) print(s1.age)
2、在类中限制实例只能绑定哪些属性
class Stuedent(object): __slots__ = ('name',"age")
这个时候我们去绑定一个未申明的方法会报错
# 为实例临时绑定方法 from types import MethodType def set_age(self,age): self.age = age s1.set_age = MethodType(set_age,s1) s1.set_age(20) print(s1.age)
报错如下
AttributeError: 'Stuedent' object has no attribute 'set_age'
如果我们申明允许绑定的话就可以绑定成功
class Stuedent(object): __slots__ = ('name',"age","set_age")
再次绑定属性的话就可以绑定成功
# 为实例临时绑定方法 from types import MethodType def set_age(self,age): self.age = age s1.set_age = MethodType(set_age,s1) s1.set_age(20) print(s1.age)