Como implementar “__iadd __ ()” para um tipo imutável?

Eu gostaria de subclassificar um tipo imutável ou implementar um dos meus próprios que se comporta como umint faz como mostrado na seguinte sessão do console:

>>> i=42
>>> id(i)
10021708
>>> i.__iadd__(1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'int' object has no attribute '__iadd__'
>>> i += 1
>>> i
43
>>> id(i)
10021696

Não surpreendentemente,int objetos não têm__iadd__() método, ainda aplicando+= para um não resulta em um erro, em vez disso, aparentemente, cria um novoint e também, de alguma forma, reatribui-a magicamente para o nome dado na instrução de atribuição aumentada.

É possível criar uma classe ou subclasse definida pelo usuário de uma imutável embutida que faz isso e, em caso afirmativo, como?

questionAnswers(4)

yourAnswerToTheQuestion