user interface at runtimeor to specifications typed in configuration file although we could code every class in our imaginary set to manually check thesetooit' lot to ask of clients (required is abstract here--it' something to be filled in)def extra(selfarg)class client if required()client extra extra client augmentstoo distributed class client if required()client extra extra class client if required()client extra extra client ( extra(we can add methods to class after the class statement like this because class-level method is just function that is associated with class and has first argument to receive the self instance although this worksit might become untenable for larger method setsand puts all the burden of augmentation on client classes (and assumes they'll remember to do this at all!it would be better from maintenance perspective to isolate the choice logic in single place we might encapsulate some of this extra work by routing classes through manager function--such manager function would extend the class as required and handle all the work of runtime testing and configurationdef extra(selfarg)def extras(class)if required()class extra extra class client extras(client class client extras(client class client extras(client client ( extra( metaclasses manager functiontoo manual