由于Python是动态语言,任何实例在运行期都可以动态地添加属性。
如果要限制添加的属性,例如,Student类只允许添加 name、gender和score 这3个属性,就可以利用Python的一个特殊的__slots__来实现。
顾名思义,__slots__是指一个类允许的属性列表:
class Student(object):
__slots__ = ('name', 'gender', 'score')
def __init__(self, name, gender, score):
self.name = name
self.gender = gender
self.score = score
s = Student('Bob', 'male', 59)
print(s.name)
print(s.gender)
print(s.score)
结果为:
Bob
male
59
但是,当__slots__ = (‘name’, ‘gender’)时:
class Student(object):
__slots__ = ('name', 'gender')
def __init__(self, name, gender, score):
self.name = name
self.gender = gender
self.score = score
s = Student('Bob', 'male', 59)
print(s.name)
print(s.gender)
print(s.score)
结果为:
AttributeError: ‘Student’ object has no attribute ‘score’
__slots__的目的是限制当前类

本文介绍了Python中如何使用__slots__特性限制类实例的属性,以Student类为例,展示了如何定义特定属性并防止动态添加其他属性,同时比较了两种实现方式。
最低0.47元/天 解锁文章
1020

被折叠的 条评论
为什么被折叠?



