python 根据路径和类名动态加载类

def get_plugin_by_name(self, package, clazz_name):
    """
    package 类所在路径
    clazz_name 类名
    http://stackoverflow.com/questions/547829/how-to-dynamically-load-a-python-class
    https://docs.python.org/2/library/functions.html?highlight=__import__#__import__
    :param package:
    :param clazz_name:
    :return:
    """
    try:
        plugin_name = clazz_name.capitalize() + 'Plugin'
        module = __import__(package + '.' + clazz_name, fromlist=[plugin_name])
        claz = getattr(module, plugin_name)
        return claz(region_id=self.get_current_region_id(),
                    access_key=self.aliyun_access_key)
    except Exception as exp:
        LOG.error("Get plugin: %s by package: %s error for %s" % (clazz_name, package, exp,))


你可能感兴趣的:(ClassLoader,python,dynamic)