types --- 内置类型的名称

本模块为标准 Python 解释器使用、但未作为内置项暴露的一些对象类型定义了名称(例如函数或生成器的类型),同时还提供了少量用于动态构造类的辅助函数。

这是 CPython types 模块一个子集的 MicroPython 移植版。一些在 MicroPython 中没有有意义表示的类型别名(CodeTypeMappingProxyTypeSimpleNamespaceTracebackTypeFrameTypeGetSetDescriptorTypeMemberDescriptorType)被暴露为 None 占位符,以便仅引用它们的代码仍可正常导入,但它们不会通过 isinstance() 匹配任何真实对象。

可用性: 本模块是 micropython-lib 的一部分。仅在 OpenMV N6 和 OpenMV AE3 上默认包含。在其他 OpenMV Cam 上,可使用 mip 安装(或冻结到自定义固件中);参见 包管理

类型别名

types.FunctionType: type

用户自定义函数以及由 def 语句创建的对象的类型。

types.LambdaType: type

lambda 表达式的类型。与 FunctionType 相同。

types.GeneratorType: type

由生成器函数生成的生成器迭代器对象的类型。

types.MethodType: type

用户自定义类实例的绑定方法的类型。

types.BuiltinFunctionType: type

内置函数(例如 len()sys.exit())的类型。

types.BuiltinMethodType: type

内置类型的绑定方法(例如 [].append)的类型。与 BuiltinFunctionType 相同。

types.ModuleType: type

已导入模块的类型。

types.CodeType: None

CPython code 对象类型的占位符。在本实现中始终为 None

types.MappingProxyType: None

CPython 中由 type.__dict__ 返回的只读映射代理类型的占位符。在本实现中始终为 None

types.SimpleNamespace: None

CPython types.SimpleNamespace 类的占位符。在本实现中始终为 None

types.TracebackType: None

回溯对象类型的占位符。在本实现中始终为 None

types.FrameType: None

帧对象类型的占位符。在本实现中始终为 None

types.GetSetDescriptorType: None

扩展类型定义的属性描述符类型的占位符。在本实现中始终为 None

types.MemberDescriptorType: None

扩展类型定义的槽描述符类型的占位符。在本实现中始终为 None

函数

types.new_class(name: str, bases: tuple = (), kwds: dict | None = None, exec_body: Callable[[dict], None] | None = None) type

以与符合 PEP 3115class 语句相一致的方式动态创建一个类对象。

  • name 是新类的名称。

  • bases 是基类组成的元组。

  • kwds 是要传递给元类的关键字参数字典。如果存在 "metaclass" 键,则直接选定元类。

  • exec_body 是一个可选的可调用对象,将以刚准备好的类命名空间作为参数被调用;它应当为该命名空间填充新类的属性。

返回新构造的类。

types.prepare_class(name: str, bases: tuple = (), kwds: dict | None = None) tuple[type, dict, dict]

为新类计算合适的元类并准备命名空间。

  • name 是即将创建的类的名称。

  • bases 是基类组成的元组。

  • kwds 是关键字参数字典。如果存在 "metaclass" 键,则将其从返回的 kwds 中移除并用作元类。否则使用 bases[0] 的元类,并在缺失时回退到 type

返回一个三元组 (metaclass, namespace, kwds),其中 namespace 是在已定义 metaclass.__prepare__ 时调用其结果,否则为空字典;kwds 是输入的副本,并移除了任何 "metaclass" 项。