我有这堂课:
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__
方法,以便仅添加 ifself.sim.in_observe_window()
返回True
。
但是,如果初始值太大,我有:
溢出错误:Python int 太大而无法转换为 C long。
做我想做的事情并处理大数字的正确方法是什么?