视图是Python 3的有用结构。对于那些从未注意到的人(像我一样):对于字典d
,您可以写k = d.keys()
,即使您更新d
,变量k
仍然会为您提供更新键。然后你可以写k1 & k2
,它总会给你d1.keys() & d2.keys()
我想为我的个人待办事项管理器实现此功能,但我想制作复杂的视图动态或懒惰评估。也就是说,我有一些名为so
,post
和priority
的观点,我希望能够写一下:
now = so | phone & priority
以便稍后调用__repr__(now)
时,仅在那个点执行评估。
我的第一个想法是重载逻辑运算符,因此我更改了View.__and__
以创建一个新视图,该视图记住自己是两个子视图的合成,并在计算时将&
应用于它们。但似乎有很多逻辑运算符,所以我不确定我是否做了正确的事情。
是否有标准的库类可以帮助我?我该如何简化流程?
答案 0 :(得分:1)
好吧,有一个collection.UserList类定义了大部分,也许这意味着你不必覆盖所有这些。
答案 1 :(得分:1)
没有“简单”的方法可以这样做,尤其是如果您想要所述的懒惰行为。但是,仍然没有那么多逻辑运算符,只有三个:__and__
,__or__
和__xor__
。
(为了提高效率,您可以选择实施就地版本__iand__
,__ior__
和__ixor__
,但如果不这样做,则会将普通版本作为后备调用