Моя платформа AppEngine MVCEngine динамически импортирует классы контроллеров.Фактический код в контексте можно просмотреть на Google Code .
Вкратце, вот как я это делаю:
controller_name = "foo"
controller_path = "app/controllers/%s_controller.py" % controller_name
controller = __import__(controller_path)
controllerClass = classForName(controller_name, namespace=controller.__dict__)
и функция classForName
:
def classForName(name, *args, **kw):
ns = kw.get('namespace',globals())
return ns[name](*args)
Я не читал статью Ника о Lazy Loading, на которую ссылались выше, но он в значительной степени авторитет в AppEngine, и он лучше меня понимает (крайне важную) производительностьхарактеристики различных подходов к кодированию для AppEngine.Обязательно прочитайте его статью.