__slots__是python新式类中的一个特性,简单理解为“槽的意思”,类只拥有放在槽里的属性,上代码:

注释掉__slots__=(‘x’,’y’),则对象b可以自由添加属性x,y,z,运行结果打印出x,y,z的值,对象b的属性

包含x,y,z

class B(object): #”””This is class B””” #__slots__=(‘x’,’y’) #槽限制了只能有属性x,y pass def test(self): “””This is class B””” print(‘class B’) if __name__ == ‘__main__’: b = B() b.x = 1 b.y = 2 print(b.x,b.y) b.z = 2 #B类没有属性z print(b.z) print(dir(b))

反注释__slots__=(‘x’,’y’),则对象b只可以添加属性x,y,无法添加属性z,运行结果打印出x,y的值,

对象b没有属性z