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)

 

posted on 2019-05-09 10:08  bainianminguo  阅读(101)  评论(0编辑  收藏  举报