isa name' absence in the lowest __slots__ list does not preclude its existence in higher __slots__ because slot names become class-level attributesinstances acquire the union of all slot names anywhere in the treeby the normal inheritance ruleclass e__slots__ [' '' 'class ( )__slots__ [' ''__dict__' ( ax ( superclass has slots but so does its subclass the instance is the union (slotsacinspecting just the inherited slots list won' pick up slots defined higher in class treee __slots__ [' '' ' __slots__ [' ''__dict__' __slots__ [' ''__dict__' __dict__ {' ' but slots are not concatenated instance inherits *lowest__slots__ and has its own an attr dict for attr in list(getattr( '__dict__'[])getattr( '__slots__'[])print(attr'=>'getattr(xattr) = = __dict__ ={' ' other superclass slots misseddir(xbut dir(includes all slot names many names omitted ' '' '' '' 'in other wordsin terms of listing instance attributes genericallyone __slots__ isn' always enough--they are potentially subject to the full inheritance search procedure see the earlier mapattrs-slots py for another example of slots appearing in multiple superclasses if multiple classes in class tree have their own __slots__ attributesgeneric programs must develop other policies for listing attributes--as the next section explains handling slots and other "virtualattributes generically at this pointyou may wish to review the discussion of slots policy options at the coverage of the lister py display mix-in classes near the end of the preceding prime example of why generic programs may need to care about slots such tools that attempt to list instance data attributes generically must account for slotsand perhaps other such "virtualinstance attributes like properties and descriptors discussed ahead --names that similarly reside in classes but may provide attribute values for instances advanced class topics