class Student(object): pass
>>> s = Student() >>> s.name = 'Tom' # 动态给实例绑定一个属性 >>> print(s.name) Tom
如果我们想要限制实例的属性怎么办?比如,只允许对Student实例添加name和age属性。
为了达到限制的目的,Python允许在定义class的时候,定义一个特殊的__slots__变量,来限制该class实例能添加的属性:
class Student(object): __slots__ = ('name', 'age') # 用tuple定义允许绑定的属性名称
使用__slots__要注意,__slots__定义的属性仅对当前类实例起作用,对继承的子类是不起作用
除非在子类中也定义__slots__,这样,子类实例允许定义的属性就是自身的__slots__加上父类的__slots__的
本文介绍如何在Python中通过__slots__特性限制类实例可以绑定的属性,以实现更高效的内存管理和编码规范。此特性对当前类实例有效,但对继承的子类无效,除非子类也定义了__slots__。
9万+

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



