一、背景
python 动态语言,可以在运行过程中,修改实例的属性和增删方法
Python有时我们只想使用固定的属性,不想任意绑定属性
__slots__ 作用
限制对象属性的添加,限制类的实例使用的属性的种类
二、进行对比
-
python 动态语言,可以随意修改实例的属性和增删方法
class User:
pass
user = User()
user.username = 'zhangsan'
user.age = 18
user.sex = 'male'
print(user.age)
print(user.sex)
-
如果类需要限制对象属性的添加,限制类的实例使用的属性的种类
user 中只能使用username、age 两个属性
class User:
__slots__ = ['username', 'age']
user = User()
user.username = 'zhangsan'
user.age = 18
print(user.age)
加一个username、age 之外的则报错
user.sex = 'male'
print(user.sex)
三、优点
类的属性固定的情况,__slots__速度更快、更节省内存