python中是否有办法在适当的位置增加int对象,int似乎未实现,__iadd__所以+ = 1实际上返回了一个新对象
__iadd__
>>> n=1 >>> id(n) 9788024 >>> n+=1 >>> id(n) 9788012
我想要的是n保持指向同一对象。
目的:我有一个从int派生的类,并且我想为该类实现C型“ ++ n”运算符
结论:好的,因为int是不可变的,看来我将不得不编写自己的类,就像这样
class Int(object): def __init__(self, value): self._decr = False self.value = value def __neg__(self): if self._decr: self.value -= 1 self._decr = not self._decr return self def __str__(self): return str(self.value) def __cmp__(self, n): return cmp(self.value, n) def __nonzero__(self): return self.value n = Int(10) while --n: print n
int是不可变的,因此如果您想使用“可变的int”,则必须使用所有int的方法来构建自己的类