Files
ZERO_CODE/main_package/depend_main/functions/abstractFactoryFunction.py

36 lines
1.3 KiB
Python
Raw Normal View History

2026-01-11 00:11:34 +08:00
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