¿Cómo puedo realizar divison en un datetime.timedelta en python?

Me gustaría poder hacer lo siguiente:

num_intervals = (cur_date - previous_date) / interval_length 

o

 print (datetime.now() - (datetime.now() - timedelta(days=5))) / timedelta(hours=12) # won't run, would like it to print '10' 

pero la operación de división no es compatible con timedeltas. ¿Hay alguna manera de que pueda implementar divison para timedeltas?

Edición: Parece que esto se agregó a Python 3.2 (gracias rincewind!): Http://bugs.python.org/issue2706

Claro, simplemente convierta a una cantidad de segundos (minutos, milisegundos, horas, elija su unidad) y haga la división.

EDITAR (otra vez): por lo que no puede asignar a timedelta.__div__ . Intenta esto, entonces:

 divtdi = datetime.timedelta.__div__ def divtd(td1, td2): if isinstance(td2, (int, long)): return divtdi(td1, td2) us1 = td1.microseconds + 1000000 * (td1.seconds + 86400 * td1.days) us2 = td2.microseconds + 1000000 * (td2.seconds + 86400 * td2.days) return us1 / us2 # this does integer division, use float(us1) / us2 for fp division 

Y para incorporar esto en la sugerencia de Nadia:

 class MyTimeDelta: __div__ = divtd 

Ejemplo de uso:

 >>> divtd(datetime.timedelta(hours = 12), datetime.timedelta(hours = 2)) 6 >>> divtd(datetime.timedelta(hours = 12), 2) datetime.timedelta(0, 21600) >>> MyTimeDelta(hours = 12) / MyTimeDelta(hours = 2) 6 

etc. Por supuesto, incluso podría nombrar (o alias) a su clase personalizada timedelta para que se use en lugar del real timedelta , al menos en su código.

La división y la multiplicación por enteros parece funcionar fuera de la caja :

 >>> from datetime import timedelta >>> timedelta(hours=6) datetime.timedelta(0, 21600) >>> timedelta(hours=6) / 2 datetime.timedelta(0, 10800) 

Puede anular el operador de división de esta manera:

 class MyTimeDelta(timedelta): def __div__(self, value): # Dome something about the object