Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python jsonpickle忽略集合deque的maxlen_Python_Collections_Pickle_Jsonpickle - Fatal编程技术网

Python jsonpickle忽略集合deque的maxlen

Python jsonpickle忽略集合deque的maxlen,python,collections,pickle,jsonpickle,Python,Collections,Pickle,Jsonpickle,我尝试用jsonpickle保存和恢复collection.deque列表,但是maxlen参数在这个过程中丢失了 original_test = deque(maxlen=2) original_test.append(1) original_test.append(2) print(original_test) >>> deque([1, 2], maxlen=2) # everything ok jsonpickle本身并不猜测应该序列化哪些属性。如果要编写自定义

我尝试用jsonpickle保存和恢复collection.deque列表,但是maxlen参数在这个过程中丢失了

original_test = deque(maxlen=2)
original_test.append(1)
original_test.append(2)

print(original_test)
>>> deque([1, 2], maxlen=2) # everything ok



jsonpickle
本身并不猜测应该序列化哪些属性。如果要编写自定义类,则必须

但是,由于您无法控制
deque
类,因此必须实现:


jsonpickle
本身并不猜测应该序列化哪些属性。如果要编写自定义类,则必须

但是,由于您无法控制
deque
类,因此必须实现:


谢谢你的帮助!谢谢你的帮助!
encoded_test = jsonpickle.encode(original_test)
print(encoded_test)
>>> {"py/seq": [1, 2], "py/object": "collections.deque"} # where is maxlen?
restored_test = jsonpickle.decode(encoded_test)
restored_test.append(3)

print(restored_test)
>>> deque([1, 2, 3]) # maxlen missing
class DequeHandler(jsonpickle.handlers.BaseHandler):
    def flatten(self, obj, data):
        return list(obj),obj.maxlen
    def restore(self,obj):
        return deque(obj[0], maxlen=obj[1])
jsonpickle.handlers.register(deque, DequeHandler)