2 from enum
import IntEnum
16 with cls._instance_lock:
17 if not hasattr(cls,
"__instance__"):
23 with cls._instance_lock:
24 if not hasattr(cls,
"__instance__"):
30 with cls._instance_lock:
31 if not hasattr(cls,
"__instance__"):
44 在字典里重复递归,直到得出最后的值,如果查不到就返回None
47 def parse_list(listData: list, tag: str):
49 if listData
is not None:
50 if isinstance(listData, list):
52 if isinstance(i, list)
or isinstance(i, tuple):
53 rt = parse_list(list(i), tag)
55 result_list.append(rt)
56 elif isinstance(i, dict):
57 result_list.append(parse_dict(i, tag))
59 result_list.append(parse_obj(i, tag))
61 elif isinstance(listData, tuple):
62 result_list.append(parse_list(list(listData), tag))
64 elif isinstance(listData, dict):
65 result_list.append(parse_dict(listData, tag))
67 result_list.append(parse_obj(listData, tag))
73 def parse_dict(dictData, tag: str):
75 if dictData
is not None:
76 if isinstance(dictData, dict):
77 if tag
in dictData.keys():
78 result_dict.append(dictData.get(tag))
80 for index, value
in dictData.items():
81 if isinstance(value, list)
or isinstance(value, tuple):
82 result_dict.append(parse_list(list(value), tag))
83 elif isinstance(value, dict):
84 result_dict.append(parse_dict(value, tag))
86 result_dict.append(parse_obj(value, tag))
87 elif isinstance(dictData, list):
88 result_dict.append(parse_list(list(dictData), tag))
91 result_dict.append(parse_obj(dictData, tag))
96 def parse_obj(objData, tag: str):
101 for i, v
in da.items():
103 result_obj.append(getattr(objData, i))
105 if isinstance(v, list):
106 obj_item_list.append(getattr(objData, i))
107 elif isinstance(v, dict):
110 result_obj.append(parse_list(obj_item_list, tag))
111 result_obj.append(parse_dict(obj_item_dict, tag))
115 if isinstance(objData, dict):
116 result_obj.append(parse_dict(objData, tag))
117 elif isinstance(objData, list):
118 result_obj.append(parse_list(list(objData), tag))
120 if isinstance(objData, object):
121 if isinstance(objData, str):
123 elif isinstance(objData, int):
125 elif isinstance(objData, float):
128 if hasattr(objData, tag):
129 result_obj.append(getattr(objData, tag))
130 load(da=objData.__dict__)
132 load(da=objData.__dict__)
135 return parse_obj(obj_data, target)
147 setattr(self, key, obj)
170 node.init_data = value
171 if isinstance(value, dict):
172 for key, val
in value.items():
173 if isinstance(val, (dict, list, tuple)):
177 elif isinstance(value, list):
180 if isinstance(val, (dict, list, tuple)):
182 list_temp.append(val)
183 node.add(
'', list_temp)
196 return str(self.
flag)
200 def __init__(self, val, method=None, *args, **kwargs):
206 def item(self, val, order) -> object: ...
219 return int(self.
val) <= int(other)
225 return int(self.
val) < int(other)
231 return int(self.
val) >= int(other)
243 return self.
val != other
253 return order.end(self.
val)
260 from aestate.util.others import Switch,Case,CaseDefault
262 base_symbol = lambda x: x + x
266 # case(选择性参数,满足条件时执行的方法,当满足条件后中间方法需要的参数)
267 source = Switch(Case(val)) + \
268 Case(0, base_symbol, val) + \
269 Case(1, base_symbol, val) + \
270 Case(2, base_symbol, val) + \
271 Case(3, base_symbol, val) + \
272 Case(4, base_symbol, val) + \
273 Case(5, base_symbol, val) + \
274 CaseDefault(lambda: False)
275 print(ajson.aj.parse(source, bf=True))
277 source = Switch(Case(val)). \
278 case(0, base_symbol, val). \
279 case(1, base_symbol, val). \
280 case(2, base_symbol, val). \
281 case(3, base_symbol, val). \
282 case(4, base_symbol, val). \
283 case(5, base_symbol, val). \
285 print(ajson.aj.parse(source, bf=True))
292 def case(self, item, method, *args, **kwargs):
293 if item
in self.
opera.keys():
294 raise KeyError(f
'`{item}` Already exists in the `case`')
299 def end(self, default_method, *args, **kwargs):
304 for k, v
in self.
opera.items():
306 return v.method(*v.args, **v.kwargs)
307 return default_method(*args, **kwargs)
310 return other.item(self.
val, self)