作用:
1.限定一个类的实例只能有固定的属性
2.通常为防止错写属性名而发生运行时的错误
基本语法:
__slots___ = ['属性一','属性二']
注意:用了__slots__列表,这个类里面就只能含有列表中的属性,如果包含其他属性,会被报错。
示例(没有使用__slots__):
class Student:
def __init__(self, name, score):
self.name = name
self.score = score
s1 = Student('小张','58')
print(s1.score)
#此处把score故意写成了sscore
s1.sscore = 100 #此处把score写成了sscore
print(s1.sscore)
运行结果:
示例(使用__slots__列表):
class Student:
__slots__=['name','score']
def __init__(self, name, score):
self.name = name
self.score = score
s1 = Student('小张','58')
print(s1.score)
s1.sscore = 100 #此处把score写成了sscore
print(s1.sscore)
运行结果:
结果显示:s1的这个类,没有sscore这个属性。(因为__slots__列表限定了,Student这个类只能有’name’和’score’这两个属性。通过这个方法,我们可以避免在出现拼写错误时,程序正常运行,导致难以排查。)