复制Python对象类型如PyInstance和PyFunction

0 投票
1 回答
738 浏览
提问于 2025-04-18 04:12

我刚接触Python的C API。

我在一个特定的场景中遇到了问题,涉及到实例和函数对象的类型。我需要对这两个类型进行深拷贝。

这里,pcoOriginalValue的类型是PyObject*。

PyObject* pcoInstanceCopy;
if( true == PyInstance_Check(pcoOriginalValue))
{
  //I need to deep copy the contents of pcoOriginalValue to pcoInstanceCopy here.
}

同样的情况也适用于,

PyObject* pcoFunctionCopy;
if( true == PyFunction_Check(pcoOriginalValue))
{
  //I need to deep copy the contents of pcoOriginalValue to pcoFunctionCopy here.
}

如果有任何参考资料或指针,那就太好了。

谢谢

1 个回答

0

虽然你可以随时在你的C代码中调用copy.deepcopy这个标准库函数,但看起来你想自己实现深拷贝。

我简单(可能不太准确)地说,你首先需要了解如何在纯Python中做到这一点,然后再把你的代码转换成CPython的C API调用。你可以把当前的copy.deepcopy实现作为一个起点。

撰写回答