是否可以使用“type is”语句测试 Python 3 的dict_keys、dict_values和dict_items内置类型?
很容易获得给定的内置类型(在本例中为float):
>>> type(4.5)
<class 'float'>
Run Code Online (Sandbox Code Playgroud)
并使用“type is”语句来测试其类型:
>>> type(4.5) is float
True
>>> type(4.5) is int
False
Run Code Online (Sandbox Code Playgroud)
现在我将创建一个简单的 Python 字典:
simpleDict = {
'firstKey' : 'firstValue',
'secondKey' : 'secondValue',
}
Run Code Online (Sandbox Code Playgroud)
很容易列出字典的 键、值或在这个例子中的项目:
>>> simpleDict.items()
dict_items([('secondKey', 'secondValue'), ('firstKey', 'firstValue')])
Run Code Online (Sandbox Code Playgroud)
并获取该字典的dict_内置类型之一的类型:
>>> type(simpleDict.items())
<class 'dict_items'>
Run Code Online (Sandbox Code Playgroud)
但是现在我不知道如何使用“type is”语句来测试该内置类型:
>>> type(simpleDict.items()) is dict_items
Traceback (most recent call last):
File "<input>", line 1, in <module>
NameError: name 'dict_items' is not defined
Run Code Online (Sandbox Code Playgroud)
我不需要这样做的实际原因,我只是好奇为什么dict内置类型被报告为“未定义”,因此显然不可测试(?)与“类型是”测试。
正如 Padraic Cunningham 在评论中所说,您可以使用以下测试来检查 dict_items 是否相等:
>>> type(simpleDict.items()) is {}.items().__class__
True
Run Code Online (Sandbox Code Playgroud)
这也适用于keys()和values():
>>> type(simpleDict.keys()) is {}.keys().__class__
True
>>> type(simpleDict.values()) is {}.values().__class__
True
Run Code Online (Sandbox Code Playgroud)
通常,要对类执行“类型是”测试,请初始化该类的一个空对象,并获取__class__该对象的成员以用于比较。
| 归档时间: |
|
| 查看次数: |
1092 次 |
| 最近记录: |