在Python C API中,我已经知道如何通过PyImport_ImportModule
导入模块,如Python Documentation: Importing Modules中所述。我也知道,有很多创建或分配或初始化模块的方法以及一些操作模块的功能,如Python Documentation: Module Objects中所述。
但是我怎样才能从模块中获取一个函数(并调用它),或者如何从一个模块中获取一个类型/类(并实例化它),或者如何从一个模块中获取一个对象(并对其进行操作),还是从模块中获取任何东西,然后做我想做的事情?
我认为这可能是一个愚蠢的问题,但我确实找不到任何教程或文档。我认为可以实现此目标的唯一方法是使用PyModule_GetDict
获取模块的__dict__
属性并获取我想要的内容,如the latter documentation I mentioned中所述。但是文档还建议不要使用此功能来操作该模块。
那么,从模块中获取某些东西的任何“正式方式”或最佳做法是什么?
答案 0 :(得分:1)
根据documentation for PyModule_GetDict
:
建议扩展程序使用其他
PyModule_*()
和PyObject_*()
函数,而不是直接操纵模块的__dict__
。
您需要的功能是通用对象功能(PyObject_*
)而不是模块功能(PyModule_*
),我怀疑这是您在错误的地方查找的地方。