gpt4 book ai didi

python - 克服 Python 在实例方法方面的局限性

转载 作者:太空狗 更新时间:2023-10-29 20:44:25 27 4
gpt4 key购买 nike

Python 似乎对实例方法有一些限制。

  1. 无法复制实例方法。
  2. 不能 pickle 实例方法。

这对我来说是有问题的,因为我的工作是非常面向对象的 project我在其中引用了实例方法,并且同时使用了深度复制和酸洗。酸洗的事情主要是由多处理机制完成的。

解决这个问题的好方法是什么?我对复制问题做了一些丑陋的解决方法,但是我正在为这两个问题寻找更好的解决方案。

有人有什么建议吗?

更新:

我的用例:我有一个小型事件系统。每个事件都有一个 .action 属性指向它应该触发的函数,有时该函数是某个对象的实例方法。

最佳答案

您可以使用 copy_reg.pickle 来做到这一点.在 Python 2.6 中:

import copy_reg
import types

def reduce_method(m):
return (getattr, (m.__self__, m.__func__.__name__))

copy_reg.pickle(types.MethodType, reduce_method)

这不存储方法的代码,只存储它的名称;但这在一般情况下会正常工作。

这使得酸洗和复制都有效!

关于python - 克服 Python 在实例方法方面的局限性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1798450/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com