import json from ..AbstractFactory.AbstractFactory import * def create_class(class_name, base_class_name, init_func): base_class = globals().get(base_class_name, object) if init_func is not None: init_func = find_init_func(init_func['module_name_en'], init_func['belong'], init_func['meta_class_func_name_en']) new_class = type( class_name, # 类名 (base_class,), # 基类(继承自 object) { "__init__": init_func, } ) return new_class def find_init_func(packages_name, modules_name, function_name): modules_path = f"{packages_name}.{modules_name}" modules = importlib.import_module(modules_path) # 获取函数 func = getattr(modules, function_name) return func # 常规一行根据数据库创建新类 def create_class_from_db(attr_data, funcs_data, init_func=None): new_class = create_class(funcs_data["meta_class_name_en"], funcs_data["type"], init_func) new_class.add_field_to_class(attr_data["member_field"]) for add_funcs in json.loads(json.dumps(funcs_data))["meta_class_func"]: new_class.add_function_to_class(add_funcs['module_name_en'], add_funcs['belong'], add_funcs['meta_class_func_name_en']) return new_class