我想子类化一个不可变类型或实现我自己的一个,其行为类似于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
,并且还以某种方式神奇地将其重新分配给增强赋值语句中给出的名称。
是否可以创建一个用户定义的类或内置不可变类的子类来执行此操作,如果可以,如何?