轻松实现动态视图的方法?

时间:2009-06-28 07:01:12

标签: python arrays python-3.x set

视图是Python 3的有用结构。对于那些从未注意到的人(像我一样):对于字典d,您可以写k = d.keys(),即使您更新d,变量k仍然会为您提供更新键。然后你可以写k1 & k2,它总会给你d1.keys() & d2.keys()

我想为我的个人待办事项管理器实现此功能,但我想制作复杂的视图动态懒惰评估。也就是说,我有一些名为sopostpriority的观点,我希望能够写一下:

    now = so | phone & priority

以便稍后调用__repr__(now)时,仅在那个点执行评估。

我的第一个想法是重载逻辑运算符,因此我更改了View.__and__以创建一个新视图,该视图记住自己是两个子视图的合成,并在计算时将&应用于它们。但似乎有很多逻辑运算符,所以我不确定我是否做了正确的事情。

是否有标准的库类可以帮助我?我该如何简化流程?

2 个答案:

答案 0 :(得分:1)

好吧,有一个collection.UserList类定义了大部分,也许这意味着你不必覆盖所有这些。

答案 1 :(得分:1)

没有“简单”的方法可以这样做,尤其是如果您想要所述的懒惰行为。但是,仍然没有那么多逻辑运算符,只有三个:__and____or____xor__

(为了提高效率,您可以选择实施就地版本__iand____ior____ixor__,但如果不这样做,则会将普通版本作为后备调用