问题标签 [pyobject]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
353 浏览

python - 创建一个带有附加函数的 PyObject 并返回 Python

我想知道如何PyObject在 C++ 中创建一个然后将其返回给 Python。

可悲的是,文档对此并不是很明确。没有PyObject_Create所以我想知道分配sizeof(PyObject)PyObject_Malloc初始化结构是否足够。

现在我只需要一个带有附加功能的对象。

0 投票
1 回答
1096 浏览

python - Cpython如何实现它的类型对象,即类型的类型总是类型?

我知道python中的所有东西都是一个对象,并且这些对象的“类型”(或类)是“类型”。加上类型的类型也是类型本身。(正如这里很好解释的那样)

我不明白的是这个循环引用是如何实现的?所以我看这里。引用可能解释我正在寻找的部分:

这是类型的类型,也就是它的元类型。它由 PyObject_HEAD_INIT 宏的参数初始化,其值通常应为 &PyType_Type。但是,对于必须(至少)在 Windows 上可用的动态可加载扩展模块,编译器会抱怨这不是有效的初始化程序。因此,约定是将 NULL 传递给 PyObject_HEAD_INIT 宏,并在模块初始化函数开始时显式初始化此字段,然后再执行其他任何操作。这通常是这样完成的:

由于 C 不是基于 OOP 的,我知道当一个人创建一个类时,它可以有一个属性来指向对象本身作为它自己的类。我确信我在这里缺乏理解导致我处于困惑状态,任何人都可以指出这是否是其他脚本语言或某种模式设计中的常见做法,如果有人可以对此有所了解,我会很感激的。

编辑:我在这里发现:

这是类型对象的类型对象;它与 Python 层中的 type 和 types.TypeType 是同一个对象。

那个怎么样?

0 投票
3 回答
6044 浏览

c++ - 如何在 Python 中处理来自 C++ 的 PyObject*

我创建了用 C++ 编写的 DLL,导出函数返回 PyObject *。然后我使用 ctypes 在 Python 中导入 DLL。现在,我怎样才能得到真正的 PyObject ?

这是c ++代码的一部分:

和一些python代码:

*我想得到真正的包含 1,2,3,4...10 的 python 列表?* 我清楚吗?谢谢提前

0 投票
0 回答
167 浏览

python - 如何将填充的 c 结构传递给 python(没有 ctypes)

如何在不使用 ctypes 的情况下将 ac 结构传递给 python?

我有一个指向stats_res_t我试图返回 python 的结构的指针。

我正在尝试类似的东西

但它会导致python中的段错误。

是否可以使用将填充的结构传递给 python PyObject

0 投票
0 回答
163 浏览

python - boost::python PyObject 隐式转换

我有处理 C++ 和 python 回调的 C++ 类。例如:

一些 API 使用它,例如:

我希望在 python 端调用带有回调的 Foo 将被隐式转换为 Callback,但它不起作用 - 代码类似于

我得到了这样的错误:

我尝试使用implicitly_convertible:

但徒劳无功。

有什么建议么?

0 投票
1 回答
1479 浏览

python - python Gtk.PrintOperation 打印一个pdf

到目前为止,我一直在使用此代码的变体来打印我用 pisa 创建的 pdf。

这取自 pygtk 常见问题解答:

现在我正在移植到 Gtk3 PyObject,但我无法解决问题。我发现 Gtk.PrintOperation 是一种方式,但我无法将打印操作与 printJob 或如何传递文件进行打印相关联。
谢谢

0 投票
1 回答
988 浏览

python - 将c变量传递给python并返回

我正在使用 PyObject 功能来调用 c 函数,并且

将东西返回给我的 python 程序,这一切都很好。

但是我有一个自定义的 C 类型

如何将此实例传递回python,以便稍后将其提供给其他c函数,我能想到的最接近的是使用

但这显然会破坏变量,因为我以后没有得到正确的结果。

0 投票
1 回答
5413 浏览

python - 检查 PyObject 是否为 None

我只想检查PyObject我拥有的 a 是否是None. 我天真地期望None Pyobject *从函数返回的任何指针都是 NULL 指针,但情况似乎并非如此。

那么:我如何检查我的 a 是否PyObject *指向一个None对象?

我知道PyInt_Check(PyObject *)周围有类似的宏,但我找不到类似PyNone_Check. 我以为我可以检查我的PyObject和之间的相等性Py_None,但结果我什至不知道如何与这个库进行相等性比较。

0 投票
1 回答
1638 浏览

python - C++ 到 numpy 并返回到 C++,元组 PyObject

我正在实现一个 Visual C++ 代码(MS VStudio 2013),它从相机获取图像,处理图像,通过 PyObject 将预处理数据(数组 2 或更多双精度数)发送到 python,并返回 numpy 处理的结果来自 python(py 中 3 个双精度的元组,在 C++ 中变成了 3 个双精度的数组)。我将 py 函数作为独立脚本进行了测试。但是,我不断从 PyObject_CallObject() 返回 null。python 和 VC++ 项目位于同一目录中。

我已经在 py 函数中设置了一个日志文件记录来记录来自 C 的调用,所以我知道在某些情况下 C++ 调用不会到达 py 函数,而在其他情况下确实会调用 py 函数,但是,也许,返回值无法处理。具体来说,我发现当元组包含一个对象时我可以调用py函数(正日志记录),但是当元组包含两个或多个对象时我不能调用它(没有日志文件记录)。另外,如果 py 函数不需要参数,并且不需要返回任何内容,则所有调用都成功。

我已经用谷歌搜索并阅读了与使用元组在 C++ 和 py 之间进行通信有关的所有内容,但仍然没有使其工作。我还阅读了文档和示例,但仍然没有运气。

我已将代码剥离到最低限度并重现了该问题。下面是一个示例,当我将两个零作为输入传递并期望得到三个零时。对于这方面的任何线索,我将不胜感激......

0 投票
1 回答
882 浏览

python - 错误:“PyObject”(又名“_object”)类型的值不能根据上下文转换为“bool”

我将一个 python 模块作为PyObject. 我想检查这个值是否在我的 C 代码中为 NONE,使用这种形式:

我收到以下错误。如何从 PyObject 转换为布尔值,类似于 Python 的 if 函数的行为方式。值得注意的是,当tmp是一个boost::python::object变量时,此命令按预期工作。