python - Python C API:如何从模块中获取内容
问题描述
在 Python C API 中,我已经知道如何通过 导入模块PyImport_ImportModule
,如Python 文档:导入模块中所述。我也知道有很多方法可以创建或分配或初始化模块以及一些用于操作模块的函数,如Python 文档:模块对象中所述。
但是我如何从模块中获取函数(并调用它),或者从模块中获取类型/类(并实例化它),或者从模块中获取对象(并对其进行操作),或者获取任何东西从一个模块做我想做的任何事情?
我认为这可能是一个愚蠢的问题,但我真的找不到任何教程或文档。我认为可以实现此目的的唯一方法是使用PyModule_GetDict
获取__dict__
模块的属性并获取我想要的内容,如我提到的后一个文档中所述。但文档也建议不要使用此功能来操作模块。
那么从模块中获取某些东西的任何“官方方式”或最佳实践?
解决方案
根据以下文档PyModule_GetDict
:
建议扩展使用其他
PyModule_*()
和PyObject_*()
功能,而不是直接操作模块的__dict__
.
您需要的函数是通用对象函数 ( PyObject_*
) 而不是模块函数 ( PyModule_*
),我怀疑这是您找错地方了。
推荐阅读
- python - 在 Python 中从字符串中提取电子邮件服务提供商
- opendaylight - 编译 Opendaylight Fluorine 的 hello world 示例时出错 - yang 工具问题
- javascript - Get all the Child Elements and push it into array
- java - 在给定大小的单元格java中间绘制字符串
- python - 如何准确测量在 python 3.7 中返回值的函数的 cpu 时间?
- c# - 如何从 gziptream 生成的字节数组创建 gz zip 文件
- react-native - Redux Store 更新但 mapStateToProps 中没有更新状态
- ios - How to shorten build time of Flutter iOS app using fastlane
- c++ - How I can use Keyboard interaction in this code
- ios - Set color for all UINavigationBars