'Combine the ``_slots`` dict from parent classes, and determine
``__slots__`` for them on the new class.'

def __new__(meta, name, bases, attrs):

    base_slots = {}
    for base in reversed(bases):
        base_slots.update(getattr(base, '_slots', ()))
    slots = dict(base_slots)
    slots.update(attrs.get('_slots', ()))
    attrs['__slots__'] = (set(slots) - set(base_slots))
    attrs['_slots'] = slots
    return type.__new__(meta, name, bases, attrs)
