__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