&gt; The only time you should actually override __iadd__ is for mutable objects<p>What would the rationale be for such a rule?<p>the docs don&#x27;t mention anything like that <a href="https:&#x2F;&#x2F;docs.python.org&#x2F;2&#x2F;library&#x2F;operator.html" rel="nofollow">https:&#x2F;&#x2F;docs.python.org&#x2F;2&#x2F;library&#x2F;operator.html</a> and I&#x27;ve never heard it before. In Python, neither integers nor strings are mutable and both support the &quot;x += y&quot; syntax.<p>The __iadd__ method works the same for both mutable and immutable objects AFAIK