Python 3 でビューが導入されました (この質問を参照してください)。また、Python 2.7 にバックポートされました。私は現在dict
、Python 2.7 アプリケーションでサブクラス化を行っています (ただし、Python 3 にも移植することを目標としています)。.viewitems()
元のビューとまったく同じように動作するように、および同様の関数をサブクラス化できるかどうか、およびその方法を考えていました。
これが私の意図です:私はこのような辞書を持っています:
data = my_subclassed_dict
data["_internal"] = "internal_value"
data["key"] = "value"
list(data.keys()) == ["key"]
つまり、 で始まる stat をすべてフィルタリングします"_"
。これは今のところ問題なく機能します。イテレータyield
の場合は、リストの場合は、望ましくない値をフィルタリングするリスト内包表記を使用します。ただし、これらのアイテムはdict
もう接続されていません (これは問題ありません。まさに dict のように感じます)。ただし、どちらの方法でも、これは機能しません。
keys = data.viewkeys()
"key" in keys
del data["key"]
"key" not in keys # This is False !
元のキーへの参照がないため、最後の部分は機能しないため、Python は認識しません。
だから:これを達成する簡単な方法はありますか(すべてのロジックを再実装することなく!)?
私のシナリオではあまり当てはまらないので、これは興味のない質問です。