gpt4 book ai didi

python - 如何对Python类进行深拷贝?

转载 作者:行者123 更新时间:2023-12-01 03:54:41 24 4
gpt4 key购买 nike

我想制作类的副本,同时更新其所有方法以引用一组新的 __globals__

我在想类似下面的东西,但是与types.FunctionType不同,types.UnboundMethodType的构造函数不接受__globals__,任何建议如何解决这个问题?

def copy_class(old_class, new_module):
"""Copies a class, updating __globals__ of all methods to point to new_module"""

new_dict = {}
for name, entry in old_class.__dict__.items():
if isinstance(entry, types.UnboundMethodType):
entry = types.UnboundMethodType(name, None, old_class.__class__, globals=new_module.__dict__)
new_dict[name] = entry
return type(old_class.name, old_class.__bases__, new_dict)

最佳答案

__dict__ 值是函数,而不是未绑定(bind)的方法。未绑定(bind)的方法对象仅在属性访问时创建。如果您__dict__中看到未绑定(bind)的方法对象,则说明在此函数到达之前您的类对象发生了一些奇怪的事情。

关于python - 如何对Python类进行深拷贝?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37668233/

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