From dfa97c9d24b8124ca38ec5eb605cde932cd6ea78 Mon Sep 17 00:00:00 2001 From: 简律纯 Date: Tue, 2 May 2023 23:30:19 +0800 Subject: --- tests/test.py | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 tests/test.py (limited to 'tests/test.py') diff --git a/tests/test.py b/tests/test.py new file mode 100644 index 0000000..8c3807b --- /dev/null +++ b/tests/test.py @@ -0,0 +1,77 @@ +import threading +import pickle +import os + + +class ConfigManager: + def __init__(self, filename): + self.lock = threading.RLock() + self.filename = filename + try: + with open(filename, 'rb') as f: + self.data = pickle.load(f) + except FileNotFoundError: + self.data = {} + + self.properties = {} + self.apis = {} + + def load(self): + with self.lock: + try: + with open(self.filename, 'rb') as f: + self.data = pickle.load(f) + self.properties.update(self.data) + except FileNotFoundError: + self.data = {} + + def save(self): + with self.lock: + try: + with open(self.filename, 'wb') as f: + # 将self.properties字典中的内容合并至self.data字典中 + for k, v in self.properties.items(): + self.data[k] = v + # 将self.apis字典中的函数状态保存至self.data字典中 + for k, v in self.apis.items(): + if v is not None: + self.data[k] = v + pickle.dump(self.data, f) + except Exception as e: + print('Error saving config data:', repr(e)) + raise + + def register_property(self, name, default_value): + self.properties[name] = default_value + + def getter(self, default_value=default_value): + with self.lock: + return self.data.get(name, default_value) + + def setter(self, value): + with self.lock: + self.data[name] = value + + setattr(ConfigManager, name, property(getter, setter)) + + def register_api(self, name, func, default_value=None): + self.apis[name] = default_value + + def wrapper(*args, **kwargs): + with self.lock: + return func(*args, **kwargs) + + setattr(ConfigManager, name, wrapper) + + +c = ConfigManager("test.dat") + +# c.register_property("bot_off_list", [999, 777]) +# def send_message(self, message): +# print("Sending message:", message) + +# c.register_api("send_message", send_message, default_value="Hello, world!") + +# c.save() +c.load() +print(c.properties,c.properties['bot_off_list'],c.apis) -- cgit v1.2.3-70-g09d2