我有这个类:
class MetricInt(int):
"""Int wrapper that adds only during the observation window."""
def __new__(cls, _, initial):
return int.__new__(cls, initial)
def __init__(self, sim, initial):
int.__init__(initial)
self.sim = sim
def __add__(self, val):
if self.sim.in_observe_window():
self = MetricInt(self.sim, super(MetricInt, self).__add__(int(val)))
return self
这基本上是重写__add__
方法,以便仅在self.sim.in_observe_window()
返回True
时执行加法。
但是,如果初始值太大,会出现以下错误:
OverflowError:Python整数太大,无法转换为C长。
我试图做的事情正确的方法是什么,如何处理大数?