Простой и часто не рекомендуемый способ использования eval.
Просто делаю:
obj = eval('common.test.TestClass')
Даст вам объект, указанный в строке.
Другими, более изящными способами, может быть запрос каждого объекта в цепочке на предмет следующего атрибута - вы можете проверить это следующим образом:
string = 'common.test.TestClass'
# this retrieves the topmost name, supposedly a module, as an object:
obj = globals()[string.split(".")[0]]
# And retrieve each subobject object therein:
for part in string.split(".")[1:]:
obj = getattr(obj, part)
Если часть вашего пути к объекту является еще не импортированным подмодулем, то это не сработает - вам нужно «выполнить» инструкцию import для получения модуля - Exec является «более сильной» формой eval , который поддерживает операторы, а eval зарезервирован только для выражений.