没有被放到__slots__
中,所以不能绑定相应的
属性,试图绑定未被定义的属性将得到AttributeError
的错误。
使用__slots__
要注意,__slots__
定义的属性仅对当前类实例起作用,对继承的子类是不起作用的
class Student(object):
__slots__ = ('name','age')
def setname(self,name):
self.name = name
def setage(self,age):
self.age = age
def setscore(self,score):
self.score = score
def getname(self):
return self.name
def getage(self):
return self.age
def getscore(self):
return self.score
def getinfo(self):
print('name=%s,age=%d,score=%d'%(self.name,self.age,self.score))
q=Student()
q.setname('张三')
q.setage(10)
q.setscore(100)
报错:
AttributeError: 'Student' object has no attribute 'score'
属性未被定义
验证__slot__是否对继承的对象的实例有影响。
class BB(Student):
pass
bb=BB()
bb.setname('xiaobibi')
bb.setage(10)
bb.setscore(100)
bb.getinfo()
输出:
name=xiaobibi,age=10,score=100
结论:不会对继承对象的实例有影响。