What is Slots?
A class mechanism that restricts attribute creation and reduces memory usage by using a fixed set of instance variables.
By default, Python objects store attributes in a __dict__ dictionary. __slots__ replaces this with a fixed tuple of allowed attributes: class Point: __slots__ = ('x', 'y'). This prevents adding arbitrary attributes and significantly reduces memory per instance.
Benefits include 30-40% memory reduction for classes with many instances, faster attribute access, and preventing typos in attribute names. Trade-offs include no __dict__, no multiple inheritance with different __slots__, and no dynamic attributes.