【问题标题】:Easy way to implement dynamic views?实现动态视图的简单方法?
【发布时间】:2010-11-06 11:13:11
【问题描述】:

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

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

    now = so | phone & priority

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

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

是否有一个标准库类可以帮助我解决这个问题?如何简化流程?

【问题讨论】:

  • “我的第一个想法是重载逻辑运算符,因此我更改了 View.__and__ 以创建一个新视图,该视图记住自己是两个子视图的组合,并在计算时将 & 应用于它们。”这似乎是正确的。不知道有没有什么库可以缓解重复。

标签: python arrays python-3.x set


【解决方案1】:

嗯,有一个 collection.UserList 类定义了其中的大部分,也许这意味着您不必覆盖所有这些。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-02
      • 1970-01-01
      相关资源
      最近更新 更多