<p>我想复制一个类,同时更新它的所有方法以引用一组新的<code>__globals__</code></p>
<p>我在想下面的事情,但是与<code>types.FunctionType</code>不同,<code>types.UnboundMethodType</code>的构造函数不接受{<cd1>},有什么建议可以解决这个问题吗?在</p>
<pre><code>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)
</code></pre>