Как реализовать «__iadd __ ()» для неизменяемого типа?

Я хотел бы создать подкласс неизменяемого типа или реализовать свой собственный, который ведет себя какint делает, как показано в следующем сеансе консоли:

>>> 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

Не удивительно,int объекты не имеют__iadd__() метод, но применяя+= к одному не приводит к ошибке, вместо этого он, очевидно, создает новыйint а также каким-то волшебным образом переназначает его на имя, указанное в расширенном операторе присваивания.

Можно ли создать пользовательский класс или подкласс встроенного неизменяемого класса, который делает это, и если да, то как?

Ответы на вопрос(4)

Ваш ответ на вопрос