модули пакета Импорта во времени выполнения (рецепт Python)
http://code.activestate.com/recipes/223972/
###################
## #
## classloader.py #
## #
###################
import sys, types
def _get_mod(modulePath):
try:
aMod = sys.modules[modulePath]
if not isinstance(aMod, types.ModuleType):
raise KeyError
except KeyError:
# The last [''] is very important!
aMod = __import__(modulePath, globals(), locals(), [''])
sys.modules[modulePath] = aMod
return aMod
def _get_func(fullFuncName):
"""Retrieve a function object from a full dotted-package name."""
# Parse out the path, module, and function
lastDot = fullFuncName.rfind(u".")
funcName = fullFuncName[lastDot + 1:]
modPath = fullFuncName[:lastDot]
aMod = _get_mod(modPath)
aFunc = getattr(aMod, funcName)
# Assert that the function is a *callable* attribute.
assert callable(aFunc), u"%s is not callable." % fullFuncName
# Return a reference to the function itself,
# not the results of the function.
return aFunc
def _get_class(fullClassName, parentClass=None):
"""Load a module and retrieve a class (NOT an instance).
If the parentClass is supplied, className must be of parentClass
or a subclass of parentClass (or None is returned).
"""
aClass = _get_func(fullClassName)
# Assert that the class is a subclass of parentClass.
if parentClass is not None:
if not issubclass(aClass, parentClass):
raise TypeError(u"%s is not a subclass of %s" %
(fullClassName, parentClass))
# Return a reference to the class itself, not an instantiated object.
return aClass
######################
## Usage ##
######################
class StorageManager: pass
class StorageManagerMySQL(StorageManager): pass
def storage_object(aFullClassName, allOptions={}):
aStoreClass = _get_class(aFullClassName, StorageManager)
return aStoreClass(allOptions)
Я перешел с Eclipse на Netbeans год назад и за это время не нашел хорошей альтернативы Mylyn. Даже последние dev-сборки Cubeon и близко не подходят. Несмотря на то, что Netbeans - очень хорошая IDE, наличие контекстного управления Mylyn для меня крайне важно. Я только что опубликовал тему на форуме Netbeans, в которой обсуждаю этот вопрос и пытаюсь проиллюстрировать важность альтернативы Mylyn. Если это важно для кого-то из читающих эту статью, я предлагаю вам оставить сообщение в этой теме:
http://forums.netbeans.org/viewtopic.php?t=27871
Я думаю, что обсуждение этого вопроса на форуме - лучший вариант на данный момент. Пока сообщество Netbeans не убедится в важности Mylyn, любой официальный запрос о возможностях обречен на провал.
Редактирование: Теперь есть запрос на эту функцию. Если вы хотите, чтобы это было реализовано, пожалуйста, проголосуйте здесь: http://code.google.com/p/cubeon/issues/detail?id=135
Взгляните на Cube'n , плагин Trac для Netbeans. Я не использовал его (пока), но он имеет автономную поддержку, некоторую интеграцию перетаскивания с представлением задач и поддержку пользовательских рабочих процессов трассировки.