gpt4 book ai didi

python - 如何将 PyObject_IsInstance 与非内置类一起用作第二个参数?

转载 作者:太空狗 更新时间:2023-10-30 01:16:38 25 4
gpt4 key购买 nike

在 C/C++ 中,我想查看 PyObject 是否是一个实例。不幸的是,PyInstance_Check 宏不适用于新型类。

因此,根据我阅读的论坛帖子,PyObject_IsInstance 可以解决问题。但是,我发现的所有示例都在演示与内置类型(如 int 和字符串)的比较。

我想知道如何构造一个表示某个类型的类的 PyObject,以便将它传递给 PyObject_IsInstance 的第二个参数。你能帮帮我吗?

最佳答案

根据该页面的内容,我终于自己找到了答案:Create instance of a python class , declared in python, with C API

// 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);
}

关于python - 如何将 PyObject_IsInstance 与非内置类一起用作第二个参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11867227/

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