使用 Python 中的 slots 技术,是一种好的 Pythonic 技巧,还是来自于 C 语言家族的习惯呢?据说它可以提高程序的性能,减少内存消耗,特别是在创建很多对象时。原则上,使用 slots 可能会成为日常例行公事,因为几乎总是可以知道类的哪些属性将会被用到。那么我应该什么时候使用 slots 呢?
这是'官方'答案: "slots 类内声明的一种方法,通过预先声明实例属性的空间并消除实例字典来节省内存。虽然很受欢迎,但这种技术有些棘手,并且最好保留在内存关键应用程序具有大量实例的罕见情况下使用。"
我认为CPython dict在3.6中的内部更改略微降低了__slots__
的收益。
__slots__
字典来记录您的代码,而像 PyCharm 这样的 linters/IDEs 使用__slots__
来检查您的变量访问。 - c z