gpt4 book ai didi

Python 模块 __builtin__ 没有属性 NoneType

转载 作者:太空宇宙 更新时间:2023-11-04 10:52:08 24 4
gpt4 key购买 nike

出于超出此问题范围的原因,我正在构建一个序列化机制。我遇到了 None 对象的问题,我认为我需要特殊情况。谁能解释为什么 NoneType 与其他内置类型的处理方式不同?还是我遗漏了什么?

>>> import sys
>>> builtin = sys.modules['__builtin__']
>>> getattr(builtin,'int')
<type 'int'>
>>> getattr(builtin,'list')
<type 'list'>
>>> getattr(builtin,'NoneType')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'NoneType'

Ubuntu 上的 Python 2.6.5

澄清

当然

getattr(builtin,'None')

工作并返回一个 None 对象,它是 NoneType 的一个实例。但是类对象存在于 __builtin__ 模块中用于其他所有内容。所以这段代码适用于除 None 之外的所有内置类型:

klass = getattr(builtin, obj.__class__.__name__)

这是有道理的

>>> type(0).__module__
'__builtin__'
>>> type("foo").__module__
'__builtin__'
>>> type(None).__module__
'__builtin__'

None 失败的事实似乎是 Python 中的疏忽,除非我遗漏了什么。

最佳答案

这很奇怪。但是 python 2 中的类和对象也有很多奇怪的事情。从简单的脚本发展到成熟的 OO 的许多语言都是如此。 Python 3 旨在解决这个问题。

NoneType 已经是一个特例,因为它是单例的类对象,所以不能作为构造函数调用。

TypeError: cannot create 'NoneType' instances

因此,如果您正在编写一个通用的序列化程序,那么无论您是否无法查找类对象,您都需要对 None 进行特殊处理。

关于Python 模块 __builtin__ 没有属性 NoneType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13143887/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com