问题标签 [python-c-api]
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.
python - python中实例变量和属性之间的区别?
因此,用于编写扩展的 python 文档是这样说的:
“我们希望将我们的实例变量作为属性公开。有很多方法可以做到这一点。最简单的方法是定义成员定义:
并将定义放在 tp_members 槽中:
但是,我们已经将实例变量放入了 Noddy 结构体中:
所以我的问题是为什么我们把它们放在这两个地方。我的印象是,这是因为我们希望类型和实例都拥有它们,以便在实例更新后保留类型值。但是如果是这样的话,如果我们改变类属性,实例值是如何更新的呢?像这样:
python - 如何从 C-API 中按名称调用 python 函数?
从 c-api 中,我想按名称调用 python 函数。然后,我将使用 Python 对象列表作为参数调用该函数。
在 Python 文档中,我不清楚如何从主 Python 解释器获取“可调用”对象。
任何帮助表示赞赏:
- 从函数中获取地址
- 使用我的 PythonObject 作为参数调用该函数。
我正在使用 Python 2.x 系列进行开发。
python - 通过 C-API 向模块添加新命令?
如何通过 C-API 向我的模块动态添加方法?我有很多需要注册的函数,它们不在同一个数组中。我假设我可以使用 NULL 方法表初始化模块,因为文档说这是可能的。
一次添加我的方法的函数的名称是什么。
python - 如何在 Python C-API 中获取当前函数名?
我实现了一堆函数,它们是从 Python 解释器调用的同一个 C 函数中分派的:
没想到self是NULL,我需要获取当前正在调用的函数名。有什么方法可以获取这些信息吗?
我有几十个函数都在通过这个例程。此命令将所有选项处理成 C++ 映射并将其传递给每个命令的实现。
更新: http ://docs.python.org/extending/extending.html#a-simple-example明确表示“self 参数指向模块级函数的模块对象;对于方法,它将指向对象实例.",但是在链接到 python 2.6 时,我得到了 null。
python - c++0x std::shared_ptr 与 boost::shared_ptr
我有一个大量使用shared_ptr
和 STL 的 c++ 代码。一个常见的标题说
我现在想切换到 c++0x 以利用语言特性,使用 gcc 4.6 和-std=c++0x
. 然而std::shared_ptr
,现在也有,导致未指定shared_ptr
(boost::shared_ptr
vs std::shared_ptr
)的歧义。
改为std::shared_ptr
改为时,如下所示:
然后我遇到了问题boost::python
,它boost::shared_ptr
仅适用于(至少无需进一步摆弄):
因此,我的问题是
- 如果有一个简单的解决方案来解决和之间的歧义
boost::shared_ptr
(std::shared_ptr
除了现在不使用 c++0x),还有 - if
boost::shared_ptr
最终将只是std::shared_ptr
;的别名 这将自动解决我的问题。
谢谢!
python - 从 C 函数构建 PyObject*?
我将 Python 嵌入到我正在制作的 C++ 库中。我希望用户能够以函数指针的形式传递 C 函数,PyObject* (fpFunc*)(PyObject*,PyObject*);
以便我可以在嵌入式 Python 中使用这些函数。
所以我有一个函数指针,我知道可以使用PyMethodDef
struct 将此函数作为模块的方法并将其传递给Py_InitModule("module", ModMethods);
,从而获得一个PyObject* module
我可以轻松从中获取函数的函数。
但是,我真正欣赏的是能够即时创建此功能,而不必每次都重新创建另一个模块。
我已经查看了 Python 文档和一些 Python 标头,以考虑一种没有真正成功的 hacky 方式......但我想知道是否有更传统的方式来做到这一点。
据我了解,每个函数都属于一个模块,甚至__builtin__
,所以我想我至少需要一个模块。
关于如何实现这一目标的任何想法?
python - 如何检查 PyObject* 是否指向类型 numpy.uint8
如何使用 Python C-API 检查 PyObject* 是否指向 numpy.uint8 等类型?
(请注意,我想检查 PyObject* 是否指向 numpy.uint8 类型,而不是它是否指向 numpy.uint8 类型的实例。)
python - 使用 C 将 numpy 数组对象拆分为两个不同大小的向量
我有
X 作为输入 --- 这是 dtype 对象,具有以下结构 x=[[1,2,3,4...n 个元素],[1 个元素],[1,2,...m 个元素], [1 个元素]]
为了模仿输入...
我将 X 作为参数传递给我的 Python C 扩展作为 PyArray_Object
现在我被困在这里,因为我不确定如何将其拆分为 4 个对象请任何人都可以给我一些关于此的指示...
python - 使用 C-API 在 Numpy 数组中反转轴
我正在使用 Python C-API 将一些 C++ 代码包装为 Python 包。最后,我必须在一个 numpy 数组中反转一个轴,即做
x = x[:, ::-1]
有没有办法使用 Numpy C-API 做到这一点?我知道有转置和交换轴的例程,但我没有找到很多关于索引的信息。有任何想法吗?谢谢,安迪
python - Python:PyDateTime_FromTimestamp 的用法
我正在开发一个 python c-extension,并希望创建一个带有 unix 时间戳的 python datetime 对象实例。
在文档站点(http://docs.python.org/c-api/datetime.html)上,我找到了 PyDateTime_FromTimestamp() 函数,它根据输入参数返回一个新的引用。
描述如下: 给定一个适合传递给 datetime.datetime.fromtimestamp() 的参数元组,创建并返回一个新的 datetime.datetime 对象。
我尝试使用 PyFloat_Object 调用该函数,但该函数始终返回 NULL(即使我只是输入 0)。
有人有一个例子,我必须如何调用该函数,或者可以提示需要什么样的参数元组才能使其工作?
谢谢!