python oop __slots__方法
动态语言python 可以在程序运行的情况下给class加上功能。具体为
#引入一个 from types import MethodType #方法 #然后 s.set_age = MethodType(set_age, s, Student) #给一个实例绑定方法 #s是一个实例 然后set_age是外面定义的一个方法,student是s实例所属的类。
如果要给整个类绑定set_age方法的话 可以使用
from types import MethodType Student.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__里面的属性名称 都不再可以被添加。 #还有需要注意的是 这个 对继承的子类就会失去效果