在廖老师的网站上学习的__slots__属性
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2017/5/14 17:16 # @Author : Aries # @Site : # @File : 使用_slots_.py # @Software: PyCharm from types import MethodType # # class Student(object): # pass # s=Student() # s.name="zb" # print(s.name) # def setAge(self,age): # self.age=age # s.setAge=MethodType(setAge,s)##这里给实例绑定方法的做法值得关注,这就是动态语言的魅力,给某个实例添加某个方法,但是 # #却对其他的实例没有影响 # ss=Student() # print(hasattr(ss,"setAge")) # print(hasattr(s,"setAge")) # Student.setAge=setAge#给Student类绑定方法,这样使得每个Student类的实例都有setAge方法 # print(hasattr(ss,"setAge")) # print(hasattr(s,"setAge")) ''' 以上是对实例和类绑定相应的方法,但是,如果我们想要对类的属性进行限制的时候,就要用到_slots_属性了。 如下 ''' class Student (object): __slots__=("name","age","sex") pass s=Student() s.name="zs" s.age=44 s.sex="F" class graduate(Student): pass g=graduate() g.sex="M" g.age=10 g.name="ls" g.score=55#注意,这里的score属性并没有在父类的__slots__属性中,但是,在子类中还是可以添加绑定的,也就是说,__slots__属性是不继承的