Jac*_*ine 4 python dictionary isinstance
为什么有这么多不同的方法来测试字典?如果对象是字典,最现代的测试方法是什么?
adict = {'a': 1}
In [10]: isinstance(adict, types.DictType)
Out[10]: True
In [11]: isinstance(adict, types.DictionaryType)
Out[11]: True
In [12]: isinstance(adict, dict)
Out[12]: True
In [13]: isinstance(adict, collections.Mapping)
Out[13]: True
In [14]: isinstance(adict, collections.MutableMapping)
Out[14]: True
Run Code Online (Sandbox Code Playgroud)
Vee*_*rac 10
types.DictType并且types.DictionaryType不推荐使用(嗯,在Python 3中删除)别名dict.
collections.Mapping并且collections.MutableMapping是抽象基类(ABCs),因此它们适用于不是子类的映射dict.通常,这使它们成为更好的选择,尽管偶尔更严格的类型检查会有所帮助.
所以基本上,按顺序检查
如果可能的话,没有一个(鸭型)
collections.Mapping 如果你不需要变异
collections.MutableMapping 如果你确实需要突变
dict如果你需要它实际上是一种dict类型(这应该是罕见的)
types.DictType或者types.DictionaryType如果你想支持真正的旧版本
| 归档时间: |
|
| 查看次数: |
159 次 |
| 最近记录: |