在 C/C++ 中,我想看看是否PyObject
是一个实例。不幸的是,PyInstance_Check
宏不适用于新式类。
所以,根据我读到的论坛帖子,PyObject_IsInstance
可以解决问题。然而,我发现的所有示例都演示了与内置类型(如整数和字符串)的比较。
我想知道如何构造一个代表某种类型的类的 PyObject,这样我就可以将它传递给PyObject_IsInstance
。你能帮助我吗?
根据该页面的内容,我终于自己找到了答案:使用 C API 创建在 python 中声明的 python 类的实例
// PyInstance_Check works only for old-style classes.
qBool isInstance = PyInstance_Check(pyInstance);
if (!isInstance)
{
// It might be an instance of a new-style class.
//
PyRef module = PyImport_ImportModule("module.where.myclass.is");
PyObject* moduleDict = PyModule_GetDict(module.Get());
PyObject* protocolClass = PyDict_GetItemString(moduleDict, "MyClass");
int returnValue = PyObject_IsInstance(pyObject, protocolClass);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)