В Python, в операции чисел смешанного типа, более узкий тип расширен больше, чем у другого, например int
+ float
→ float
:
In [57]: 3 + 0.1
Out[57]: 3.1
Но для datetime.date
имеем datetime.date
+ datetime.timedelta
→ datetime.date
, а не datetime.datetime
:
In [58]: datetime.date(2013, 1, 1) + datetime.timedelta(seconds=42)
Out[58]: datetime.date(2013, 1, 1)
Почему расширенное рассуждение применяется к числам, но не к date
/datetime
/timedelta
?
(Фон: я пишу процедуру чтения для формата файла, где одно поле - год, одно поле - в день года, одно поле - миллисекунды с полуночи. Конечно, простое и явное решение datetime.datetime(2013, 1, 1, 0, 0, 0) + datetime.timedelta(seconds=42)
, но можно было бы также обосновать, что следует переписать 3 + 0.1
как 3.0 + 0.1
)