0

所以,我有我在 Flask 应用程序中使用的课程。我在多个页面中使用这个类,这就是为什么我想将创建的类对象保存在一个泡菜中,并在我再次需要它时解包它。它只是不断给我错误..我有一个看起来类似于这样的类:

class files(name):

    def __init__(self, name):
        self.name = name
        self.settings = Settings()
        self.files_directory = self.settings.files_directory
        self.files = self.create_list()

    def store_files_from_folder(self):
        loaded_files = []
        files = list_files()

        for file in files:
            file_path = os.path.join(self.files_directory, file)
            print('Loading file: {}'.format(file))
            loaded_file = function_reads_in_files_from_folder(file_path, self.name)
            loaded_files.append(loaded_file)

        print('Loaded {} files'.format(len(loaded_files)))

我正在尝试像这样创建 jsonpickle:

creates_class = files("Mario")
jsonpickle_test = jsonpickle.encode(creates_class, unpicklable=False)
result = jsonpickle.decode(jsonpickle_test, files)

但我收到以下错误:

Traceback (most recent call last):
  File "C:\Users\lib\site-packages\IPython\core\interactiveshell.py", line 3343, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-8-23e9b5d176ac>", line 1, in <module>
    result = jsonpickle.decode(jsonpickle_test, files)
  File "C:\Users\lib\site-packages\jsonpickle\unpickler.py", line 41, in decode
    data = backend.decode(string)
AttributeError: type object 'files' has no attribute 'decode'

我无法解决它。有人可以帮助我吗?

4

1 回答 1

0

问题出在传递的参数中unpickable=False

unpicklable – 如果设置为 False,则输出将不包含将 JSON 数据转换回 Python 对象所需的信息,但会生成更简单的 JSON 流。

您可以避免unpickable=False或将生成的数据加载json.loads到 dict 中,然后使用 de kwargs 参数创建对象

creates_class = files("Mario")
jsonpickle_test = jsonpickle.encode(creates_class, unpicklable=False)
result_dict = json.loads(jsonpickle_test)
create_class = files(**result_dict)
于 2021-07-29T12:16:19.167 回答