class (bmetaclass= )pass ( attrc attr ( [ __name__ for in __mro__[' '' '' ''object'super two levels above metastill wins see for all things mro in factclasses acquire metaclass attributes through their __class__ linkin the same way that normal instances inherit from classes through their __class__which makes sensegiven that classes are also instances of metaclasses the chief distinction is that instance inheritance does not follow class' __class__but instead restricts its scope to the __dict__ of each class in tree per the mro--following __bases__ at each class onlyand using only the instance' __class__ link oncei __class__ __bases__ (, __class__ __class__ attr followed by inheritanceinstance' class followed by inheritanceclass' supers followed by instance acquisitionmetaclass another way to get to metaclass attributes if you study thisyou'll probably notice nearly glaring symmetry herewhich leads us to the next section inheritancethe full story as it turns outinstance inheritance works in similar wayswhether the "instanceis created from normal classor is class created from metaclass subclass of type-- single attribute search rulewhich fosters the grander and parallel notion of metaclass inheritance hierarchies to illustrate the basics of this conceptual mergerin the followingthe instance inherits from all its classesthe class inherits from both classes and metaclassesand metaclasses inherit from higher metaclasses (supermetaclasses?)class (type)attr class ( )attr metaclass inheritance tree gets __bases____class____mro__ class attr class ( ,metaclass= )attr superclass inheritance tree gets __bases____class____mro__ ( attr attr ( attr attr attr attr ( attr attr ( gets __class__ but not others instance inherits from super tree metaclasses class gets names from both treesmetaclass inherits names too