Я пытаюсь создать подкласс панд Timedelta
, поэтому, когда он суммируется целым числом/плавающим числом, мы рассматриваем его как Timedelta
с секундами.
Я пробовал следующее:
class Timedelta(pd.Timedelta):
def __add__(self, other):
print("OVERRIDEN ADD")
try:
print("SUPER ADD")
return super().__add__(other)
except:
print("NEW ADD")
return super().__add__(Timedelta(str(other)+"s"))
Но по какой-то причине я не могу заставить его перейти к реализации "NEW ADD"
:
>>> a = Timedelta2('10s')
>>> a+1
OVERRIDEN ADD
Traceback (most recent call last):
File "C:\Python36\lib\site-packages\IPython\core\interactiveshell.py", line 2910, in run_code
SUPER ADD
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-51-98b939904c8e>", line 1, in <module>
a+1
TypeError: unsupported operand type(s) for +: 'Timedelta2' and 'int'
Я ожидал, что это исключение TypeError
будет перехвачено, но по какой-то причине это не так, поэтому я хотел бы попросить помощи, чтобы выяснить, что здесь может происходить.
Спасибо!