问题标签 [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.
python - Python:获取 PyObject 的字符串表示?
我有一个 C python 扩展,我想打印一些诊断信息。
我收到一个字符串作为 PyObject*。
获取此对象的字符串表示形式以使其可用作 const char * 的规范方法是什么?
更新:澄清强调访问为 const char *。
python - 腌制定义为具有 PyObject* 成员的 C 结构的 Python 扩展类型
我正在通过 Python 运行 C++ 代码,并且想腌制一个扩展类型。
所以我有一个 C++ 结构 (py_db_manager),其中包含指向数据库对象和对象管理器对象(均用 C++ 编写)的指针,我用 python 类型对象 (t_db_manager) 包装了它。我的问题是这种python类型需要知道如何腌制两个指针才能将它发送到一些子多核进程。所以我用 copy_reg 模块注册了类型(这相当于在类型上写了一个reduce () 方法。但是,我不太确定要放什么。我应该用 PyObject* 构建一个元组还是只是整数指针?有人可以帮忙吗?
这是 Py_TypeObject
这是reduce方法中的代码:
c++ - 当函数采用非平凡参数时,通过 SWIG 使用 python 进行 C++ 回调?
我刚刚阅读了“SWIG 和 Python”教程的以下部分: http ://www.swig.org/Doc1.1/HTML/Python.html#n11
我理解他们在示例中所做的事情,基本上你编写了一个调用 python 的 C 函数。但是,提供的示例在参数列表中只使用了一个 double,这使得为 python 构建参数列表变得相当简单。
我有一个具有以下签名的 C++ 回调:
其中 Vector 和 Simulation 是我自己的类,而 void* 用于持有 PyObject 的 clientData(如示例中所用)
我知道 SWIG 包装了 Vector 和 Simulation 类,因为我可以在 python shell 中创建它们。唯一的问题是,我不知道如何将回调函数中的 Vector 参数转换为 python 参数列表的适当 PyObject。SWIG 在包装类本身时显然有一些方法可以做到这一点,但我不知道如何在函数中手动完成它。
非常感谢任何帮助!-追赶
python - Python和Gtk+3入门问题
问候男孩和女孩!
我是 Gtk+ 编程新手,需要一个“体面的”开源 Twitter 客户端,但我找不到,所以我正在开发一个开源的客户端。我正在使用 Gtk+3 和 Python(PyGObject 不是 PyGtk),我的条目有 2 个问题: 1 - 无法将处理程序连接到这些信号:"deleted-text"
以及连接"inserted-text"
到作为条目的我的 tweet_text。我试过了self.tweet_text.connect("inserted-text", self.on_tweet)
,self.tweet_text.set_property("inserted-text", self.on_tweet)
但它一直失败。2 - 不能让我的 tweet_text 多行。
我在这里搜索了文档http://readthedocs.org/docs/python-gtk-3-tutorial/en/latest/但我找不到与它相关的任何内容。并且a还搜索了与Gtk+3相关的C文档。
如果有人帮忙,我很感激。提前致谢。
python - 如何确定用于声明 PyObject 实例布局的 struct?
我正在用 C++ 编写 Python 3 扩展,并试图找到一种方法来检查 aPyObject
是否与定义其实例布局的类型(结构)相关。我只对 static-size 感兴趣PyObject
,而不是PyVarObject
. 实例布局由具有某些明确定义的布局的结构定义:强制PyObject
标头和(可选)用户定义的成员。
下面是PyObject
基于定义新类型中著名的Noddy 示例的扩展示例:
重要的是要注意它Noddy
是一个类型,一个编译时实体,但NoddyType
它是一个在运行时存在于内存中的对象。Noddy
和之间唯一明显的关系NoddyType
似乎是sizeof(Noddy)
存储在tp_basicsize
成员中的值。
在 Python 中实现的手写继承指定了允许在PyObject
用于声明该特定实例布局的类型之间进行转换的规则PyObject
:
在各种槽函数等情况下,可以安全地假设“Python 对象是 Noddy”并在没有任何检查的情况下进行强制转换。但是,有时需要在其他情况下强制转换,然后感觉就像是在盲目转换:
可以检查sizeof(Noddy) == Py_TYPE(obj)->tp_basicsize
,但由于以下原因,它是不充分的解决方案:
1) 如果用户将来自Noddy
并且指向 , 的实例是obj
不同的。但是,强制转换以获取指向实例布局部分的指针仍然是安全的。foo
BabyNoddy
Py_TYPE(obj)->tp_basicsize
reinterpret_cast<Noddy*>(obj)
2)可以有其他结构声明实例布局的大小相同Noddy
:
事实上,在 C 语言级别,NeverSeenNoddy
struct 与 object 类型兼容NoddyType
——它可以适应NoddyType
. 所以,演员阵容可能非常好。
所以,我的大问题是:
是否有任何 Python 策略可用于确定 aPyObject
是否与Noddy
实例布局兼容?
有什么方法可以检查是否PyObject*
指向嵌入的对象部分Noddy
?
如果没有政策,是否有任何黑客可能?
编辑:有几个问题似乎相似,但在我看来,它们与我提出的问题不同。例如:访问 PyObject 的底层结构
EDIT2:为了理解为什么我将 Sven Marnach 的回复标记为答案,请参阅该答案下方的评论。
python - 如何使用带有非内置类的 PyObject_IsInstance 作为第二个参数?
在 C/C++ 中,我想看看 aPyObject
是否是一个实例。不幸的是,PyInstance_Check
宏不适用于新式类。
因此,根据我阅读的论坛帖子,PyObject_IsInstance
可以解决问题。但是,我发现的所有示例都展示了与内置类型(如整数和字符串)的比较。
我想知道如何构造一个代表一个类型的类的 PyObject,所以我可以将它传递给PyObject_IsInstance
. 你能帮助我吗?
python-3.x - 使用 Pydev 编译文件 PyObject (Gtk) 时出错
我在 Pydev 中使用 pyobject (gtk) 构建应用程序,但我尝试通过以下方式创建一个窗口:
班塔纳
类应用(主要):
但我尝试编译 te App,显示以下错误:
我正在尝试使用导入
但是,不起作用,因为找不到模块。所以我使用导入:
¿ 如何解决我的问题?
对不起,我的英语不好
谢谢。
python - 找出 PyObject 方法需要多少个参数
我们可以使用以下方法提取指向 python 方法的 PyObject
我想知道该方法需要多少个参数。所以如果函数是
我如何找出它需要 2 个参数?
python - PyArg_ParseTuple 的正确用法是什么
我使用的似乎是 PyArg_ParseTuple 的确切用法,但代码仍然无法工作。我正在使用 python 2.7
这是我正在编写的 Python 扩展的 C 代码:
然后我只是构建扩展并转到终端 import et 然后 et.tpp([1,2]) 无法打印该行 if (PyArg_ParseTuple(item, "i", &arrayValue) != 0){ printf(" %d\n", 数组值); printf("万岁!\n"); }
正如您在代码中看到的那样,我检查了列表中元素的类型,并打印了“int”。然而由于某种原因 PyArg_ParseTuple 有错误。
我需要能够从 python 中的列表中访问信息以复制一些数据,将其传递给其他地方的 C 代码,然后将结果返回给 python。
非常感谢!
c++ - C++ 和 Python- 检查 PyObject 的类型失败
我有点困惑。我正在尝试进行一些 C++ 和 Python 集成,但这并不简单。我没有使用 Boost,因为我无法让 Boost::Python 正确编译。但那是另一回事了。
目前,这是我在 C++ 中所做的:
Python 程序(作为名为“data”的字符串输入到 C++ 程序):
现在,问题是类型检查不起作用。无论 Python 函数返回的是浮点数、列表还是集合,它们都返回 0。我究竟做错了什么?
如果有人能告诉我为什么对 PyRun_String 的调用会在控制台中打印返回值,则可以加分。这真的很烦人。