Files
ZERO_CODE/main_package/depend_main/functions/abstractFactoryFunction.py
vermouth789 fe39320977 123
123
2026-01-11 00:11:34 +08:00

36 lines
1.3 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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