私はこのクラスを持っています:
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
。
ただし、初期値が大きすぎる場合は、次のようになります。
OverflowError: Python int が大きすぎて C long に変換できません。
私がやろうとしていることを実行し、大きな数字を処理する正しい方法は何ですか?