def to_unicode(value):
'''change value to unicode'''
try:
if isinstance(value, (str,type(None))):
return value
if not isinstance(value, bytes):
raise TypeError("Expected bytes, unicode, or None; got %r" % type(value))
return value.decode("utf-8")
except UnicodeDecodeError:
return repr(value)
您可以使用type(None)来获取类型对象,但您希望在这里使用isinstance(),而不是type() in {...}:
assert isinstance(value, (str, type(None)))
NoneType对象在任何地方都不会公开。
我根本不使用类型检查,真的,我会使用:
assert value is None or isinstance(value, str)
因为None是单例的(非常有目的),而且NoneType明确禁止子类化:
>>> type(None)() is None
True
>>> class NoneSubclass(type(None)):
... pass
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: type 'NoneType' is not an acceptable base type
请使用
type(None)
。您可以在下面的函数中使用python shell进行类似的检查,我在该函数中使用type(None)
,以便从None
更改为NoneType
。您可以使用
type(None)
来获取类型对象,但您希望在这里使用isinstance()
,而不是type() in {...}
:NoneType
对象在任何地方都不会公开。我根本不使用类型检查,真的,我会使用:
因为
None
是单例的(非常有目的),而且NoneType
明确禁止子类化:相关问题 更多 >
编程相关推荐