Slots ***** A slot is nothing more than a memory management nicety: when you define ``__slots__`` on a class, you’re telling the Python interpreter that the list of attributes described within are the only attributes this class will ever need, and a dynamic dictionary is not needed to manage the references to other objects within the class: :: class X(object): __slots__ = ["m", "n"] >>> x = X() >>> x.m = 10 >>> x.n = 10 >>> x.k = 3 Traceback (most recent call last): File "", line 1, in ? AttributeError: 'X' object has no attribute 'k' - ``__slots__`` reserves space for the listed variables directly in the instance. - Classes that define slots don't have an instance dictionary (``__dict__``). - If you try to assign to an attribute that's not in ``__slots__``, you receive an error. This may be quite useful for struct-like classes, because it prevents problems with misspelled attribute names. - Just be warned that a slot in a derived class hides a slot of the same name in the base class.