Python 如何访问非类型?
例如,查看None的类型,我们可以看到它有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
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
()。