Class instances in Python can hold instance variables. Due to Python’s dynamic nature, these variables live within a dictionary (__dict__) for a given class instance.

class Example:
    ...

foo = Example()
foo.name = "name"
foo.age = 10

The special attribute __slots_ works as an alternative to __dict__ as when explicitly stated in the class definition, allows you to define the attributes the class instances can have. This also means that instead of having a dynamic dict that allows adding attributes to objects at anytime, there is a static structure which does not allow additions other than the slots mentioned when creating the class.

class Example:
    __slots__ = 'name'
    ...

foo = Example()
foo.name = "name"
foo.age = 10        # AttributeError

The benefits of doing this is that, since you no longer need a dictionary to hold you instance variables, you will end up with faster attribute access and space savings in memory.