environment.py 文件源码

python
阅读 37 收藏 0 点赞 0 评论 0

项目:nimp 作者: dontnod 项目源码 文件源码
def _get_instances(module, instance_type):
    result = {}
    module_dict = module.__dict__
    if "__all__" in module_dict:
        module_name = module_dict["__name__"]
        sub_modules_names = module_dict["__all__"]
        for sub_module_name_it in sub_modules_names:
            sub_module_complete_name = module_name + "." + sub_module_name_it
            try:
                sub_module_it = __import__(sub_module_complete_name, fromlist = ["*"])
            except Exception as ex: # Can be ImportError, but also TabError, and more.
                logging.warning('Error importing local command %s: %s', sub_module_complete_name, ex)
                continue
            sub_instances = _get_instances(sub_module_it, instance_type)
            for (klass, instance) in sub_instances.items():
                result[klass] = instance

    module_attributes = dir(module)
    for attribute_name in module_attributes:
        attribute_value = getattr(module, attribute_name)
        is_valid = attribute_value != instance_type
        is_valid = is_valid and inspect.isclass(attribute_value)
        is_valid = is_valid and issubclass(attribute_value, instance_type)
        is_valid = is_valid and not inspect.isabstract(attribute_value)
        if is_valid:
            result[attribute_value.__name__] = attribute_value()
    return result
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号