Имена динамических классов Python

Возможный дубликат:
Динамическая загрузка модулей python
python: Как добавить свойство в класс динамически?

У меня есть словарь с именами файлов и именами классов, как я могу импортировать имена этого класса и как я могу создать эти классы?

Пример:

classNames = { 'MCTest':MCTestClass} 

Я хочу импортировать MCTest и создать MCTestClass.

    2 Solutions collect form web for “Имена динамических классов Python”

    Вы должны использовать функцию __import__ :

    http://docs.python.org/library/functions.html# import

    Пример из страницы документа:

     >>> import sys >>> name = 'foo.bar.baz' >>> __import__(name) <module 'foo' from ...> >>> baz = sys.modules[name] >>> baz <module 'foo.bar.baz' from ...> 

    Чтобы создать экземпляр класса из baz, вы должны уметь:

     >>> SomeClass = getattr(baz, 'SomeClass') >>> obj = SomeClass() 

    От turbogears.util:

     def load_class(dottedpath): """Load a class from a module in dotted-path notation. Eg: load_class("package.module.class"). Based on recipe 16.3 from Python Cookbook, 2ed., by Alex Martelli, Anna Martelli Ravenscroft, and David Ascher (O'Reilly Media, 2005) """ assert dottedpath is not None, "dottedpath must not be None" splitted_path = dottedpath.split('.') modulename = '.'.join(splitted_path[:-1]) classname = splitted_path[-1] try: try: module = __import__(modulename, globals(), locals(), [classname]) except ValueError: # Py < 2.5 if not modulename: module = __import__(__name__.split('.')[0], globals(), locals(), [classname]) except ImportError: # properly log the exception information and return None # to tell caller we did not succeed logging.exception('tg.utils: Could not import %s' ' because an exception occurred', dottedpath) return None try: return getattr(module, classname) except AttributeError: logging.exception('tg.utils: Could not import %s' ' because the class was not found', dottedpath) return None 

    используйте его вот так:

     cls = load_class('package.module.class') obj = cls(...) 
      Python - лучший язык программирования в мире.