Python 是一个动态语言,可以动态的给实例或类增减属性或方法,给类添加的属性会影响到前后所有创建的实例。但是使用 __slots__
属性可以限定类或实例属性和方法,如果没有 __slots__
的话实例的属性和方法包含在实例的 __dict__
字典中,类的属性和方法包含在类的 __dict__
字典中。
在使用 __slots__
按常规写法可能会出现的问题大概有
- AttributeError: 'Xxx' object has no attribute 'yyy'
- AttributeError: 'Xxx' object attribute 'yyy' is read-only
- ValueError: 'yyy' in __slots__ conflicts with class variable
我们来看下面的例子 阅读全文 >>