just like normal classesmetaclasses may also employ operator overloading to make built-in operations applicable to their instance classes the __getitem__ indexing method in the following metaclassfor exampleis metaclass method designed to process classes themselves--the classes that are instances of the metaclassnot those classesown later instances in factper the inheritance algorithms sketched earliernormal class instances don' inherit names acquired via the metaclass instance relationship at allthough they can access names present on their own classesclass (type)def __getitem__(clsi)return cls data[iclass (metaclass= )data 'spammeta method for processing classesbuilt-ins skip classuse meta explicit names search class meta data descriptors in meta used first [ metaclass instance namesvisible to class only 'sb __getitem__ ( datab data normal inheritance namesvisible to instance and class ('spam''spam' [ typeerror'bobject does not support indexing it' possible to define __getattr__ on metaclass toobut it can be used to process its instance classes onlynot their normal instances--as usualit' not even acquired by class' instancesclass (type)def __getattr__(clsname)return getattr(cls datanameacquired by class getitem but not run same by built-ins class (metaclass= )data 'spamb upper('spamb upper __getattr__ ( upper attributeerror'bobject has no attribute 'upperi __getattr__ attributeerror'bobject has no attribute '__getattr__moving the __getattr__ to metaclass doesn' help with its built-in interception shortcomingsthough in the following continuationexplicit attributes are routed to the metaclasses