python - 覆盖类的 f[k] += v

标签 python python-3.2

我正在用 python 实现 Fenwick 树类。

基本上我有一个内部列表和两个方法,get(key)increase(key, inc),来处理读取和更新这个列表。 使用 __getitem__ 可以很容易地将 f[5] 映射到 f.get(5),但是有什么方法可以使 f[ 5] += 2 意思是 f.increase(5, 2)?

我找到了一个相关的 mailing list thread这表示除非您将 __getitem__ 的结果包装在实现 __iadd__ 的代理类中,否则无法完成,但这不是一个选项。所以我可能不得不接受我必须使用 increase 方法,只是想我会在这里问,以防万一有天才有解决方案。

顺便说一句,我使用的是python3.2。

最佳答案

不,您描述的方法几乎是唯一的选择。可能会有细微的变化,但没有(至少是理智的)方法可以解决 f[5] += 2 将调用 __getitem__,然后是 __setitem__ 的事实,并且只对检索到的对象执行 + 部分,而不考虑容器。

关于python - 覆盖类的 f[k] += v,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8404414/

相关文章:

ssh - 如何使用 python 3.2 使用 scp 发送文件?

python - html.parser 奇怪的行为

python - 往返纪元时间戳的最佳方法是什么?

python - 使用 Python/Bokeh 动画 GMapPlot

python - 如何在python中解析HTTP请求中参数的空值?

python - bash 和 python 管道的区别

python - DreamPie 不适用于 Python 3.2

python - Keras 中的 Tensorflow adam 优化器

python - 使用 Python 给自己发送电子邮件

python - 将 JSON 数组转换为 Python 列表