Module Objects

对于模块对象,只有少数几个特殊Function。

  • PyTypeObject PyModule_Type
    • PyTypeObject的此实例表示 Python 模块类型。这对于types.ModuleType公开给 Python 程序。
  • int PyModule_Check(PyObject ** p *)
    • 如果* p *是模块对象或模块对象的子类型,则返回 true。

在版本 2.2 中更改:接受允许的子类型。

  • int PyModule_CheckExact(PyObject ** p *)
    • 如果* p *是模块对象,但不是PyModule_Type的子类型,则返回 true。

2.2 版中的新Function。

  • PyObject * PyModule_New(const char ** name *)
    • 返回值:新参考.

返回__name__属性设置为* name *的新模块对象。仅填写模块的__doc____name__属性;调用方负责提供__file__属性。

返回实现* module *的名称空间的字典对象;该对象与模块对象的dict属性相同。此Function永远不会失败。建议扩展使用其他PyModule_*()PyObject_*()函数,而不是直接操作模块的dict

  • char * PyModule_GetName(PyObject ** module *)
    • 返回* module __name__值。如果模块不提供模块,或者模块不是字符串,则引发SystemError并返回 NULL *。
  • char * PyModule_GetFilename(PyObject ** module *)
    • 返回使用* module __file__属性从中加载 module 的文件的名称。如果未定义,或者它不是字符串,请加SystemError并返回 NULL *。
  • int PyModule_AddObject(PyObject *module ,const char name *,PyObject ** value *)
    • 将一个对象作为* name 添加到 module 。这是一个便捷Function,可以从模块的初始化Function中使用。这窃取了对 value *的引用。错误返回-1,成功返回0

2.0 版中的新Function。

  • int PyModule_AddIntConstant(PyObject *module ,const char name *,long * value *)
    • 向* module 添加一个整数常量作为 name *。可以从模块的初始化Function中使用此便利Function。错误返回-1,成功返回0

2.0 版中的新Function。

  • int PyModule_AddStringConstant(PyObject *module ,const char name *,const char ** value *)
    • 将字符串常量作为* name 添加到 module 。可以从模块的初始化Function中使用此便利Function。字符串 value *必须以空值结尾。错误返回-1,成功返回0

2.0 版中的新Function。

  • int PyModule_AddIntMacro(PyObject ** module *,宏)
    • 向* module 添加一个 int 常量。名称和值取自 macro 。例如PyModule_AddIntMacro(module, AF_INET) AF_INET 的 int 常量 AF_INET 添加到 module *。错误返回-1,成功返回0

2.6 版的新Function。

int PyModule_AddStringMacro(PyObject ** module *,宏)

Note

向* module *添加一个字符串常量。

2.6 版的新Function。