Python 如何访问非类型?

Python 如何访问非类型?,python,Python,例如,查看None的类型,我们可以看到它有NoneType: >>> type(None) NoneType >>> NoneType NameError: name 'NoneType' is not defined 但是,尝试访问NoneType时会出现NameError: >>> type(None) NoneType >>> NoneType NameError: name 'NoneType' is not

例如,查看None的类型,我们可以看到它有
NoneType

>>> type(None)
NoneType
>>> NoneType
NameError: name 'NoneType' is not defined
但是,尝试访问
NoneType
时会出现
NameError

>>> type(None)
NoneType
>>> NoneType
NameError: name 'NoneType' is not defined

如何访问
NoneType

在Python 2中,您可以从模块导入它:

但它实际上并没有在那里实现
types.py
只做
NoneType=type(None)
。您不妨直接使用
type(None)

在Python3中,
types.NoneType
名称消失了。只需使用
键入(无)



如果
type(None)
为您显示
NoneType
,而不是类似
的内容,则您可能使用了一些非标准的解释器设置,例如IPython。它通常会显示为类似于
,更清楚地表明您不能只键入
NoneType
并获取类型。

正如@dawg在评论中建议的那样,您可以这样做

if (type(some_object).__name__ == "NoneType"):
  # Do some
  pass
你也可以

NoneType = type(None)    
isinstance(some_object, NoneType) 

有趣的是,你为什么需要它?只需对这一个实例执行
type(what\u ever)==type(None)
。或者,你可以执行
type(what\u ever).\uu name\uuuuu==“NoneType”
我想知道为什么我们使用等式测试
=
而不是使用
type(what\u ever)是type(None)
也可以执行type(obj)==type(None),除了麻烦的额外代码?user2357112,你知道如何在Python3中导入它吗?我在Python3中遇到一个导入错误:
ImportError:无法导入名称“NoneType”
@user5676973 Mate你没有抓住要点。好吧,我没有抓住要点,你能解释一下吗?我的答案似乎很好。@user5676973问题并没有问如何验证输入,也没有问如何计算对象的类型。问题是如何访问类型NoneType。您一直专注于前面的几点,而忽略了问题的主要焦点。user2357112,在python 3中,NoneType似乎已作为一个类型被删除:。似乎在Python3中访问
NoneType
类型的唯一方法是
type(None)
方式。
NoneType=type(None)
对于兼容性或其他方面来说很有趣,但是对于分支
来说,如果type(some_object)是None,则更好()。我来这里是想知道当我需要NoneType作为dict中的键时该怎么做,但即便如此,似乎还是更愿意直接执行
type(None)
。@Kevin同样,如果
some\u object
None
,您的
type(some\u object)是None
将永远不会返回
True
@sausix,谢谢。我的意思是:
NoneType=type(None)
是一种很好的、可重用的处理方法,但是对于分支,建议的代码样式是一种身份检查,如
如果某个对象是None
()。