import inspect
def import_with_metaclass(modname, metaklass):
"Module importer substituting custom metaclass"
class Meta(object): __metaclass__ = metaklass
dct = {'__module__':modname}
#dct = {}
mod = __import__(modname)
for key, val in mod.__dict__.items():
if inspect.isclass(val):
setattr(mod, key, type(key,(val,Meta),dct))
return mod
class MyMeta(type):
pass
if __name__ == '__main__':
foo = import_with_metaclass('foo', MyMeta)
print type(foo.A)
print foo.A.__module__
syntax highlighted by Code2HTML, v. 0.9.1