您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

用Python腌制静态方法

用Python腌制静态方法

这似乎有效。

class PickleableStaticMethod(object):
    def __init__(self, fn, cls=None):
        self.cls = cls
        self.fn = fn
    def __call__(self, *args, **kwargs):
        return self.fn(*args, **kwargs)
    def __get__(self, obj, cls):
        return PickleableStaticMethod(self.fn, cls)
    def __getstate__(self):
        return (self.cls, self.fn.__name__)
    def __setstate__(self, state):
        self.cls, name = state
        self.fn = getattr(self.cls, name).fn

诀窍是在从类中获得静态方法时,将其锁定。

备选方案:您可以使用元类化为所有静态方法.__parentclass__赋予属性。然后,您可以子类化,Pickler并为每个子类实例提供其自己的.dispatch表,然后可以对其进行修改而不会影响全局调度表(Pickler.dispatch)。进行酸洗,解酸和调用方法可能会更快一些。

python 2022/1/1 18:39:00 有270人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶