gpt4 book ai didi

python - 使用扩展在 Python 中创建新类型

转载 作者:太空宇宙 更新时间:2023-11-04 04:59:51 26 4
gpt4 key购买 nike

我已经阅读了文档并根据他们的 Noddy 示例编写了我自己的示例:

https://docs.python.org/3.4/extending/newtypes.html

这与使用Py_BuildValue()动态构建任意对象有点不同。似乎潜在的假设是有一个 C 结构支持您要创建的每个对象实例。

这真的是在 Python 中创建新对象的唯一(最好的?)方法吗?我希望创建一个新对象并声明成员/类型,类似于创建元组、列表和字典等的方式。似乎应该可以声明一个新类型、声明成员及其类型,然后插入值在没有所有这些的情况下逐场进行。

我什至不能使用由我粘合的现有 API 定义的结构,因为 Python 对象需要强制性的PyObject_HEAD字段。我必须定义一个 C 结构,复制从 API 调用返回给我的相关元素。 C 端的内存管理级别似乎是不必要的。

最佳答案

当然,还有另一种在 Python 中创建类型的方法。或许你见过?

class Foo():
def __init__(self):
....

当然,我有点油嘴滑舌。但是,当向 Python 公开 C 接口(interface)时,让 Python 脚本执行大部分接口(interface)通常是个好主意;毕竟,编写 Python 代码比编​​写 CPython 绑定(bind)代码要快。如果你拥有的基本上是一个不透明的句柄类型和一组在这些句柄上创建/操作的 C 函数,你可以简单地将这些函数公开为自由函数,并从你的 Python 端绑定(bind)代码中使用它们。 (您甚至可以使用 ctypes 来编写一行 CPython 绑定(bind)代码。)

关于python - 使用扩展在 Python 中创建新类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29286362/

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