gpt4 book ai didi

python - 如何检查 Python 中的对象是否为 PyCapsule?

转载 作者:行者123 更新时间:2023-12-01 21:46:58 36 4
gpt4 key购买 nike

我有一个接收和接受 PyCapsule 对象的 C 扩展。

在我的 python 包装器中,如何检查 python 对象是否属于 PyCapsule 类型对象?

>>> # My C extension
>>> foo = Foo()
>>> capsule = foo.to_capsule() # returns a PyCapsule object from the C extension
>>> capsule
<capsule object "foo" at 0xf707df08>
>>> type(capsule)
<class 'PyCapsule'>
isinstance(capsule, PyCapsule)
NameError: name 'PyCapsule' is not defined

我想做的是写一个像这样的函数:

def push_capsule(capsule):
# check that the `capsule` is of type PyCapsule
# c_extension.push_capsule(capsule)

最佳答案

如您所述,PyCapsule 类型不能直接从 Python 访问。为了在没有严重 ctypes 依赖的情况下检测它(在 DavidW 接受的答案中),我会改为执行以下操作:

def is_capsule(o):
t = type(o)
return t.__module__ == 'builtins' and t.__name__ == 'PyCapsule'

关于python - 如何检查 Python 中的对象是否为 PyCapsule?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60310292/

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