如何正确地替换python中在维护方法参数的同时分派给委托的方法

2024-04-29 07:33:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在利用一个异步框架来序列化/反序列化来自连接的数据,并通过一个将来的接口返回反序列化的结果

我的问题是有些RPC调用没有返回值。如果我从反序列化结果返回None,异步框架就会认为反序列化过程有问题

为了解决这个问题,我更新了反序列化程序,以返回一个表示无返回值的令牌。这让我更进一步,但我仍然需要对未来的返回值进行后期处理,以检查该令牌,如果存在,则不返回任何令牌

我正在寻找一个干净的方法来处理这种情况。我可以创建一个委托类来包装未来,并根据需要覆盖所有方法和分派/发布过程,但这感觉过于冗长

另一种尝试是:

 def wrap_future(self, delegate):
    orig_result = delegate.result
    delegate.result = lambda: self.post_process(orig_result.__call__())
    return delegate

这适用于简单的情况,但由于Future可以接受参数,我不太确定如何捕获和传递所述参数

这让我想知道是否有更惯用的方法来完成上述任务


Tags: 数据方法self框架none利用参数序列化