11

私が実行しているコードは次のとおりです。

>>> from collections import abc
>>> mydict = {'test_key': 'test_value'}
>>> isinstance(mydict, abc.Mapping)
True

の意味は理解できますが、 from のisinstance意味がわかりません。abc.Mappingcollections

辞書であることを確認するために行isinstance(mydict, abc.Mapping)が使用されているようですか?mydict

もっと簡単にできると思いません isinstance(mydict, dict)か?

私はいくつかの検索を行い、このスレッドで関連するコメントを見つけました: What is the best (idiomatic) way to check the type of a Python variable? abc.Mapping、しかし、ここで単に使用するよりも使用する方が好ましい理由を理解するのにまだ苦労していdictます。

4

3 に答える 3

7

このcollections.abcモジュールは、Python でさまざまな種類のデータ構造を一般的に記述するために使用できるいくつかの抽象基本クラスを提供します。あなたの例では、オブジェクトがMapping抽象クラスのインスタンスであるかどうかをテストし__getitem__ます.等。)。そのようなオブジェクトは から継承するかもしれませんが、継承する必要はありません。keysvaluesitemsdictdict

の抽象型は、最上位モジュールcollections.abcを使用して実装されます。は( のサブクラスである)として編集されるため、 の実際の基本クラスではなくても、チェックは辞書を として受け入れます。abcdictregisterMutableMappingMappingisinstanceMappingMappingdict

于 2016-02-29T02:29:35.487 に答える