types.SimpleNamespace是如何实现的?

How is types.SimpleNamespace implemented?

我注意到 types.SimpleNamespace class 似乎是递归实现的。在types模块中,class定义为type(sys.implementation)。但是,type(sys.implementation) 只是 returns types.SimpleNamespace,这是不可能的,因为两个名称相互依赖才能可用。 types.SimpleNamespace实际是如何实现的?

当然是type(sys.implementation) is types.SimpleNamespace,但这并不意味着后者是来源类型(而且types.没有出现任何东西的 输出 )。与 types 中公开的大多数类型一样,SimpleNamespace 是在实现中定义的(在 CPython 中的 C 语言中),而 types 只是将 names 赋予任何迂回对于访问类型是“方便的”。 (TracebackType 是通过实际抛出和捕获虚拟异常获得的!)sys 模块实际上使用内置类型,以及创建 version_info 等其他恶作剧,即使类型不能' t 被实例化(之后)。