我注意到 types.SimpleNamespace
类似乎是递归实现的。在types
模块中,该类被定义为type(sys.implementation)
。但是,type(sys.implementation)
只是返回 types.SimpleNamespace
,这是不可能的,因为两个名称都依赖于彼此的可用性。 types.SimpleNamespace
实际是如何实现的?
最佳答案
当然type(sys.implementation)是types.SimpleNamespace
,但这并不意味着后者是类型的源(并且 types.
不会显示为任何内容的输出)。与 types
中公开的大多数类型一样,SimpleNamespace
在实现中定义(在 CPython 中为 C),而 types
仅提供名称 任何对于访问类型“方便”的迂回说法。 (TracebackType
是通过实际抛出和捕获虚拟异常获得的!)sys
模块实际上使用内置类型,以及其他恶作剧,例如创建 version_info
即使该类型无法实例化(之后)。
关于python - types.SimpleNamespace是如何实现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65509605/