如何使用 PyObject_IsInstance 和非内置类作为第二个参数?

2023-12-09

在 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(使用前将#替换为@)

如何使用 PyObject_IsInstance 和非内置类作为第二个参数? 的相关文章

随机推荐

  • 使用 SpongyCastle 的 PKCS#10 客户端证书创建 Https 连接

    The goal 我正在努力实现与客户端证书的通信 步骤 1 创建 PKCS 10 请求 CSR 并将其交给我的服务器进行签名 服务器联系人将 CSR 传递给 CA CA 对其进行签名 并返回 PKCS 7 带有签名的 PKCS 10 和
  • 如何在 Netbeans 中添加 Scala 平台?

    我已经为netbeans安装了一套Scala插件 具体来说 Scala 控制台 项目 运行时库 平台 平台标准 编辑器 调试器项目集成 重构 调试器 核心 和 Rats Packrat 解析器 我还通过 ubuntu aptitude 包管
  • 防止多列布局中的元素碎片

    鉴于此代码 wrapper border 2px solid red padding 10px width 310px height 310px webkit column width 150px webkit column gap 10p
  • PHP 写入文件

    下面是我用来将地图数组 翻译 为 SQL 代码的一些代码 以便在更新游戏地图时可以轻松更新数据库 正如您所看到的 它将 SQL 代码打印到屏幕上 以便我可以复制并粘贴它 随着我的地图变得更大 这将变得效率低下 因为它会因大量输出而使浏览器崩
  • Antlr4:输入不匹配

    这是一个简单的语法测试 我认为很容易解析 但我立即得到 不匹配的输入 并且我无法弄清楚 Antlr 正在寻找什么 输入 include something program TEST1 BLAH BLAH 我的语法 grammar ProgH
  • 从字符串转换日期和/或时间时转换失败

    我有这个查询 set IDENTITY INSERT dbo OtherData1 ON INSERT INTO OtherData1 OtherDataID EmployeeID OtherDate OType OSubject Stat
  • Sphinx 内联包括

    我想使用 include 函数内联 但只有当我用两行新行与前面的文本分开时 我才能让它实际包含我想要的文件 在有人问之前 我想包含的文件是一个协议号 所以不 它根本不会从新行中受益 我希望能够轻松更改它 以便我可以在文档的多个位置使用它 我
  • Perl 中的 yyyymmddhhmmss 到 YYYY-MM-DD hh:mm:ss?

    在 perl 中将 yyyymmddhhmmss 转换为 YYYY MM DD hh mm ss 并返回的最佳方法是什么 例如 20130218165601 到 2013 02 18 16 56 01 并返回 能https metacpan
  • 颜色树状图根据外部标签向根向上分支,直到标签匹配

    来自问题使用现有列的树状图的颜色分支 我可以为树状图叶子附近的分支着色 代码 x lt 1 100 dim x lt c 10 10 set seed 1 groups lt c red red red red blue blue blue
  • 如何填补自增字段的“洞”?

    我读过一些关于此的文章 但没有一篇涉及这个问题 我想这是不可能的 但我还是会问 我有一个包含 50 000 多个寄存器的表 这是一个旧表 其中发生了各种插入 删除操作 也就是说 大约 300 个寄存器中存在各种 漏洞 即 1340 1341
  • 打包java应用程序

    我有一个 java 应用程序 从中构建了一个依赖于许多第三方 jar 的 jar 打包该应用程序以供最终用户分发的最佳 常见方法是什么 最好的方法是使用像这样的构建工具Maven2或类似的东西 并使用它来管理您的依赖项并构建一个一体化的包
  • R 中 2 个 DTM 的余弦相似度

    我有 2 个文档术语矩阵 DTM 1 有 1000 个向量 1000 个文档 并且 DTM2 有 20 个向量 20 个文档 所以基本上我想将 DTM1 的每个文档与 DTM2 进行比较 并希望使用余弦函数查看哪些 DTM1 文档与哪些 D
  • C# - 不时检查文件是否存在并从中读取

    我创建一个 Windows 服务 它会不时检查某个文件是否存在 如果存在 然后从中读取数据 将数据发送到服务器并将文件移动到另一个文件夹 文件大小约为 1 3 Mb 我想我会用System Threading Timer此处检查文件是否存在
  • 字符串中第一个数字用“*”分隔字符串

    我认为这是一个简单的问题 但我看不出我错过了什么 我想在第一个数字处分割字符串 在字符串中存在非字母数字符号之前效果很好 帮助 Works pet lt c Dog 100 Cat 340 df lt as data frame pet d
  • 在C++中使用线程交替打印奇数和偶数

    使用线程打印奇偶数我遇到了这个问题并想讨论 C 中的解决方案 我能想到使用2个二进制信号量奇数和偶数信号量 偶数信号量初始化为 1 奇数信号量初始化为 0 T1 thread function funOdd wait even print
  • MySQL默认时间格式UTC还是GMT?

    嗨 我对 UTC 和 GMT 很困惑 我在 MySQL 表中插入前列 event date 例如 2010 07 01 23 50 00 日期时间 我的客户在前端询问选项为 GMT 1 GMT 2 GMT 1 GMT 2 等等 如果我选择任
  • 如何在 Mediawiki 中检查用户是否是使用 Php 的 Sysop?

    我正在尝试向侧边栏添加一个 div 并且我只希望此块向管理员显示 php 如何检查用户是否是管理员 我正在尝试将其添加到 myskin php 文件中 但不知道该怎么做 我一直在使用类似的东西来检查用户是否登录 有没有类似的东西来检查该用户
  • React-Router v6 未在生产环境中渲染

    我在这个问题上已经失去了智慧 希望有任何想法可以让我走上正轨 我已经实现了一个 React js SPA 它使用react router domv6 来浏览应用程序功能 该应用程序在我的本地主机上完美运行 当部署到生产中时
  • 为什么 gcc 会生成没有标志 -fno-pie 的奇怪代码?

    我正在尝试使用标志 fno pie 和不使用标志 fno pie 在 gcc 中编译虚拟函数 void dummy test entrypoint 当我在没有标志的情况下编译时 gcc m32 ffreestanding c test c
  • 如何使用 PyObject_IsInstance 和非内置类作为第二个参数?

    在 C C 中 我想看看是否PyObject是一个实例 不幸的是 PyInstance Check宏不适用于新式类 所以 根据我读到的论坛帖子 PyObject IsInstance可以解决问题 然而 我发现的所有示例都演示了与内置类型 如