test_descr.py 文件源码

python
阅读 15 收藏 0 点赞 0 评论 0

项目:ouroboros 作者: pybee 项目源码 文件源码
def _check_reduce(self, proto, obj, args=(), kwargs={}, state=None,
                      listitems=None, dictitems=None):
        if proto >= 4:
            reduce_value = obj.__reduce_ex__(proto)
            self.assertEqual(reduce_value[:3],
                             (copyreg.__newobj_ex__,
                              (type(obj), args, kwargs),
                              state))
            if listitems is not None:
                self.assertListEqual(list(reduce_value[3]), listitems)
            else:
                self.assertIsNone(reduce_value[3])
            if dictitems is not None:
                self.assertDictEqual(dict(reduce_value[4]), dictitems)
            else:
                self.assertIsNone(reduce_value[4])
        elif proto >= 2:
            reduce_value = obj.__reduce_ex__(proto)
            self.assertEqual(reduce_value[:3],
                             (copyreg.__newobj__,
                              (type(obj),) + args,
                              state))
            if listitems is not None:
                self.assertListEqual(list(reduce_value[3]), listitems)
            else:
                self.assertIsNone(reduce_value[3])
            if dictitems is not None:
                self.assertDictEqual(dict(reduce_value[4]), dictitems)
            else:
                self.assertIsNone(reduce_value[4])
        else:
            base_type = type(obj).__base__
            reduce_value = (copyreg._reconstructor,
                            (type(obj),
                             base_type,
                             None if base_type is object else base_type(obj)))
            if state is not None:
                reduce_value += (state,)
            self.assertEqual(obj.__reduce_ex__(proto), reduce_value)
            self.assertEqual(obj.__reduce__(), reduce_value)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号