通过C+将运算符()的cppyy自动映射恢复为uuu getitem_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu+;pythonization回调 >也解释了,C++中的 a和运算符()/c> >映射到Python

通过C+将运算符()的cppyy自动映射恢复为uuu getitem_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu+;pythonization回调 >也解释了,C++中的 a和运算符()/c> >映射到Python,python,cppyy,Python,Cppyy,在这个问题上,如果这不是预期的结果,建议添加一个特殊的pythonization 在我的情况中,额外的约束是将此添加到C++类本身,以确保始终应用此PythOnnuty.< /P> 然而,我很难弄清楚如何通过Python C API正确地完成这项工作。(第一次使用那个API,所以我有点迷路了) 最小复制机有些做作,但显示出问题: 注意在下面的示例中,struct A是我无法修改的代码,因为该类是在库代码中定义的。所以回调必须在B中 导入cppyy cppyy.include(“Python.h”

在这个问题上,如果这不是预期的结果,建议添加一个特殊的pythonization

在我的情况中,额外的约束是将此添加到C++类本身,以确保始终应用此PythOnnuty.< /P> 然而,我很难弄清楚如何通过Python C API正确地完成这项工作。(第一次使用那个API,所以我有点迷路了)

最小复制机有些做作,但显示出问题:
注意在下面的示例中,
struct A
是我无法修改的代码,因为该类是在库代码中定义的。所以回调必须在B中

导入cppyy
cppyy.include(“Python.h”)
cppyy.cppdef(r”“”
作废myprint(PyObject*py){
PyObject*tmp=PyObject_Str(py);
Py_ssize_t size=0;
const char*s=PyUnicode_AsUTF8AndSize(tmp,&size);

STD::首先,回答你的问题,找到你想要的代码,从“代码> KLASS <代码>的基类中获得它,而不是直接从<代码> KLASS/CODE >。你也可以在Python中这样做,而不是在C++中添加pythOngices。事实上,在Python中这样做是首选的,因为你不必处理C-API。< /P> 然而,由于实际的bug报告不是您引用的报告,而是您在这里遵循的建议,使得这成为一个典型的XY问题,所以我还要补充一点,您真正想要的是在代码示例中简单地执行
PyObject\u delattrsing(klass,“\uu getitem\uuuuuuu”)


完全不说,这里给您带来麻烦的代码来自Gaudi项目,其核心开发人员是第一个要求自动映射的人。您可能想和他们一起解决这个问题。

首先,要回答您的问题,要找到您想要的
\uGetItem\uuu
,请从
的基类获取它KLASS <代码>,不直接从代码> KLASS <代码>。您也可以在Python中执行此操作,而不是在C++中添加pythOngices。事实上,在Python中这样做是首选的,因为您不必处理C-API。
然而,由于实际的bug报告不是您引用的报告,而是您在这里遵循的建议,使得这成为一个典型的XY问题,所以我还要补充一点,您真正想要的是在代码示例中简单地执行
PyObject\u delattrsing(klass,“\uu getitem\uuuuuuu”)


完全不说,这里给您带来麻烦的代码来自Gaudi项目,其核心开发人员是第一个要求自动映射的人。您可能想和他们一起解决这个问题。

非常感谢快速回复Wim!我想在C-API中这样做的原因是我没有找到一种方法它在全球范围内使用Python one。而且,最终它似乎不是一个复杂的解决方案!只是觉得我现在有更多的问题,因为我不清楚为什么这样做有效:D无论如何,再次感谢您花时间回答并解决我的问题:)非常感谢快速回复Wim!我想在C-API中这样做的原因是,我没有看到一种在Python中全局实现的方法。而且,最终它看起来并不是一个复杂的解决方案!只是觉得我现在有更多的问题,因为我不清楚为什么这样做:D无论如何,再次感谢您的回答是时候回答和解决我的问题了:)