2

我看到 __iconcat__ 方法是在 2.5 中添加的,那么继续使用 __iadd__ 是否只是历史遗留问题?是否有某些原因它不能或没有被 __iconcat__ 取代?我是否完全误解了 __iconcat__ 的目的?

我想到的一些可能的原因是:

  1. 此更改将破坏任何通过 __iadd__ 方法重载 list += 运算符的代码(尽管我非常怀疑这是常见的做法,而且无论如何我不明白为什么 py3k 不能破坏兼容性)。

  2. __iadd__ 和 __iconcat__ 在功能上是等价的,所以区别纯粹是语义上的。由于不直接调用这些方法,因此具有稍微更有意义的方法名称并不是进行此类更改的充分理由。

我很好奇是否有人对此有任何见解或历史观点。

4

1 回答 1

4

__concat__并且__iconcat__operator模块的一部分。它们不是对象的特殊方法......请参阅:http ://docs.python.org/2/reference/datamodel.html#specialnames

于 2013-09-08T20:27:47.323 回答