4540lR5txt Listing 5. Detecting and Installing Mix-ins Named after Their Classes from MixIn import MixIn from glob import glob import os def MixInDir(dir): ''' Installs mix-ins found in the given directory. Each mix-in is expected to match the name of a class in our domain classes. ''' path = os.path.join(basePath, '*.py') for filename in glob(path): dirname, name = os.path.split(filename) name = os.path.splitext(name)[0] # Get the real class module = __import__(name) pyClass = getattr(module, name) # Get the mix-in class results = {} exec open(filename) in results mixInClass = results[name] # Mix it in MixIn(pyClass, mixInClass)