猿问

使用_槽_?

使用_槽_?

目的是什么?__slots__在Python中-尤其是当我想要使用它的时候,什么时候不想使用它呢?



米琪卡哇伊
浏览 448回答 3
3回答

DIEA

正确使用__slots__就是在物体上节省空间。与允许在任何时候向对象添加属性的动态DECT不同,存在一个静态结构,它不允许在创建后添加属性。[使用__slots__消除了每个对象的一个DECT的开销。]虽然这有时是一种有用的优化,但如果Python解释器足够动态,只有在对象实际添加时才需要DECT,则完全没有必要。不幸的是,插槽有副作用。它们以一种可以被控制怪胎和静态输入工具滥用的方式改变具有插槽的对象的行为。这是不好的,因为控件异常应该是滥用元类,而静态类型应该是滥用修饰器,因为在Python中,应该只有一种明显的方法来做一些事情。使CPython足够聪明地处理节省空间的问题__slots__是一项重大任务,这可能就是为什么它不在P3K的更改列表中(尚未)。

料青山看我应如是

你会想用__slots__如果要实例化同一类的大量(数百,数千)对象。__slots__仅作为内存优化工具存在。这是非常不鼓励使用的__slots__对于约束属性创建,通常您希望避免它,因为它会破坏泡菜,以及python的一些其他内省特性。
随时随地看视频慕课网APP

相关分类

Python
我要回答