Python面向对象编程中的高级特性与特殊方法
1. __slots__ 的使用
在Python中,通常每个类 C 的实例对象 x 都有一个字典 x.__dict__ ,Python利用这个字典允许你为 x 绑定任意属性。若想节省一点内存(代价是 x 只能拥有预定义的属性名),可以在类 C 中定义一个名为 __slots__ 的类属性,它是一个字符串序列(通常是元组)。当类 C 有 __slots__ 属性时,类 C 的直接实例 x 就没有 x.__dict__ ,并且尝试为 x 绑定任何不在 C.__slots__ 中的属性都会引发异常。
以下是一个示例,展示如何为之前定义的 Rectangle 类添加 __slots__ 以获得更小(但灵活性更低)的实例:
class OptimizedRectangle(Rectangle):
__slots__ = 'width', 'height'
这里不需要为 area 属性定义插槽,因为
超级会员免费看
订阅专栏 解锁全文
1万+

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



