1

View はPython 3の便利な構造です。(私のように) 気付かなかった人のために: 辞書dを書くことができ、変数k = d.keys()を更新しても、更新されたキーが引き続き提供されます。あなたはそれから書くことができ、それは常にあなたに与えるでしょうdkk1 & k2d1.keys() & d2.keys()

これを個人の todo マネージャーに実装したいのですが、複雑なビューをdynamicにしたり、遅延評価したりしたいと考えています。つまり、 と呼ばれるいくつかのビューがsoありpost、次のpriorityように記述できるようにしたいと考えています。

    now = so | phone & priority

後で が呼び出されたときに、その__repr__(now)時点でのみ評価が実行されるようにします。

私が最初に考えたのは、論理演算子をオーバーロードすることだったので、それ自体が 2 つのサブビューの合成であることを記憶し、計算時にそれらにView.__and__適用される新しいビューを作成するように変更しました。&しかし、かなり多くの論理演算子があるように見えるので、正しいことを行っているかどうかはわかりません。

それを助ける標準ライブラリクラスはありますか?プロセスを簡素化するにはどうすればよいですか?

4

2 に答える 2

1

さて、それらのほとんどを定義するcollection.UserListクラスがあります。おそらく、それらすべてをオーバーライドする必要がないことを意味します。

于 2009-07-02T18:16:34.143 に答える
1

これを行うための「簡単な」方法はありません。特に、前述の怠惰な動作が必要な場合はそうです。それでも、論理演算子はそれほど多くなく、__and____or__の3 つだけ__xor__です。

(さらに効率を高めるために、オプションでインプレース バージョン__iand____ior__および を実装できます__ixor__が、そうしないと、通常のバージョンがフォールバックとして呼び出されます)

于 2009-12-30T21:40:42.990 に答える