LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 458|回复: 0

模块对象

[复制链接]
发表于 2024-2-4 01:36:55 | 显示全部楼层 |阅读模式

PyTypeObject PyModule_Type
属于 稳定 ABI.
这个 C 类型实例 PyTypeObject 用来表示Python中的模块类型。在 Python 程序中该实例被暴露为 types.ModuleType。

int PyModule_Check(PyObject *p)
当 p 为模块类型的对象,或是模块子类型的对象时返回真值。该函数永远有返回值。

int PyModule_CheckExact(PyObject *p)
当 p 为模块类型的对象且不是 PyModule_Type 的子类型的对象时返回真值。该函数永远有返回值。

PyObject *PyModule_NewObject(PyObject *name)
返回值:新的引用。 属于 稳定 ABI 自 3.7 版开始.
返回新的模块对象,其属性 __name__ 为 name 。模块的如下属性 __name__, __doc__, __package__, and __loader__ 都会被自动填充。(所有属性除了 __name__ 都被设为 None)。调用时应当提供 __file__ 属性。

在 3.3 版本加入.

在 3.4 版本发生变更: 属性 __package__ 和 __loader__ 被设为 None。

PyObject *PyModule_New(const char *name)
返回值:新的引用。 属于 稳定 ABI.
这类似于 PyModule_NewObject(), 但其名称为 UTF-8 编码的字符串而不是 Unicode 对象。

PyObject *PyModule_GetDict(PyObject *module)
返回值:借入的引用。 属于 稳定 ABI.
返回实现 module 的命名空间的字典对象;此对象与模块对象的 __dict__ 属性相同。 如果 module 不是一个模块对象(或模块对象的子类型),则会引发 SystemError 并返回 NULL。

建议扩展使用其他 PyModule_* 和 PyObject_* 函数而不是直接操纵模块的 __dict__。

PyObject *PyModule_GetNameObject(PyObject *module)
返回值:新的引用。 属于 稳定 ABI 自 3.7 版开始.
返回 module 的 __name__ 值。 如果模块未提供该值,或者如果它不是一个字符串,则会引发 SystemError 并返回 NULL。

在 3.3 版本加入.

const char *PyModule_GetName(PyObject *module)
属于 稳定 ABI.
类似于 PyModule_GetNameObject() 但返回 'utf-8' 编码的名称。

void *PyModule_GetState(PyObject *module)
属于 稳定 ABI.
返回模块的“状态”,也就是说,返回指向在模块创建时分配的内存块的指针,或者 NULL。 参见 PyModuleDef.m_size。

PyModuleDef *PyModule_GetDef(PyObject *module)
属于 稳定 ABI.
返回指向模块创建所使用的 PyModuleDef 结构体的指针,或者如果模块不是使用结构体定义创建的则返回 NULL。

PyObject *PyModule_GetFilenameObject(PyObject *module)
返回值:新的引用。 属于 稳定 ABI.
返回使用 module 的 __file__ 属性所加载的 模块 的文件名。 如果属性未定义,或者如果它不是一个 Unicode 字符串,则会引发 SystemError 并返回 NULL;在其他情况下将返回一个指向 Unicode 对象的引用。

在 3.2 版本加入.

const char *PyModule_GetFilename(PyObject *module)
属于 稳定 ABI.
类似于 PyModule_GetFilenameObject() 但会返回编码为 'utf-8' 的文件名。

自 3.2 版本弃用: PyModule_GetFilename() 对于不可编码的文件名会引发 UnicodeEncodeError,请改用 PyModule_GetFilenameObject()。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表