动态语言python 可以在程序运行的情况下给class加上功能。具体为
#引入一个from types import MethodType #方法#然后s.set_age = MethodType(set_age, s, Student)#给一个实例绑定方法#s是一个实例 然后set_age是外面定义的一个方法,student是s实例所属的类。
如果要给整个类绑定set_age方法的话 可以使用
from types import MethodTypeStudent.set_score = MethodType(set_score, None, Student)#为该类增加set_score方法 给class绑定了方法之后所有的实例都可以使用。#其实除掉动态绑定的写法 上面类似于这种效果class Student(object): def set_score(): pass
然而 这样我们并不能限制一个类下面会被添加多少属性和方法
为了达到目的我们使用__slots__
#就像这样class Student(object): __slots__ = ('name', 'age')#那么没有被放在__slots__里面的属性名称 都不再可以被添加。#还有需要注意的是 这个 对继承的子类就会失去效果