Pythonでカスタムクラスのキーワード引数のアンパックをサポートするためには何が必要ですか?互換性のない型を展開しようとすると、次のエラーメッセージが与えられているのPython 2.7とPython 3.6通訳の両方で:キーワード引数のアンパックに関する要件
>>> dict(**None)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: type object argument after ** must be a mapping, not NoneType
マッピングは、オブジェクトが、具体的collections.Mapping
をサブクラス化しなければならないということですか?または、マッピングの場合はなどの擬似タイプのいずれかcollections.Iterable
を明示的にサブクラス化してiter()
をサポートする必要はありません。この動作はPython 2と3で異なりますか?
:クラスがキーを指定された値を返すように
は辞書アンパック、それが十分であることにします。 'keys'は、' __iter__'を実装するのに十分ではないことに驚いています。 –keys
方法及び対応する__getitem__
メソッドを実装するためのクラスのインスタンスのために'__iter__'は、反復子プロトコルを実装し、マッピングに制限されていないオブジェクトの方が一般的です。マップはキーを与えられた値を返すことができなければならず、 '__getitem__'はそれを行います。 –