Skip to main content

类的声明

Slot 类

本质上, Slot 是用 __slots__ 在类中定义,并列出了变量。对于不在 __slots__ 的变量或属性,将不会被定义。此外, Slot 类可能没有默认值。

添加这些限制的好处是可以进行某些优化。

例如, Slot 类占用的内存更少,这个可以使用 Pympler

from dataclasses import dataclass

@dataclass
class SimplePosition:
name: str
lon: float
lat: float

@dataclass
class SlotPosition:
__slots__ = ['name', 'lon', 'lat']
name: str
lon: float
lat: float
>>> from pympler import asizeof
>>> simple = SimplePosition('London', -0.1, 51.5)
>>> slot = SlotPosition('Madrid', -3.7, 40.4)
>>> asizeof.asizesof(simple, slot)
(440, 248)