在 python 中使用插槽是个好主意吗?

Is it a good idea to use slots in python?

在 python 中使用槽是一种很好的 pythonic 技术还是来自 C 语言家族的习惯?我听说它们可以提高程序的性能并减少内存消耗,尤其是在创建许多对象时。原则上,使用插槽可能会成为日常工作,因为几乎总是可以知道 class 的属性。那么我应该一直使用插槽吗?我应该在什么时候使用插槽?

这是'official' answer插槽 class 中的声明通过预先声明 space 实例属性和消除实例字典来节省内存。虽然流行,但该技术要正确使用有点棘手,最好保留在内存关键应用程序中有大量实例的罕见情况下。"

我相信 3.6 中 CPython dict 内部结构的变化减少了 __slots__ 的收益。