显然,
timedelta对象是不可变的,这意味着它们的值实际上是在类的
__new__()方法中设置的-
因此您需要覆盖该方法而不是其方法
__init__():
import datetimeimport reclass RaceTimedelta(datetime.timedelta): def __new__(cls, timestr=''): m = re.match(r'(d+):(d+.d+)', timestr) if m: mins, secs = int(m.group(1)), float(m.group(2)) return super(RaceTimedelta, cls).__new__(cls, minutes=mins, seconds=secs) else: raise ValueError('timestr argument not in format "mm:ss.d"')print RaceTimedelta(u'24:45.7')输出:
0:24:45.700000
顺便说一句,您为
timestr关键字参数提供默认值会被视为非法并引发,我觉得很奇怪
ValueError。



