覆盖operator +以在Python中生成日期+时间=日期时间

Pau*_*ine 7 python operator-overloading

我有几个类扩展内置日期时间.*

有没有什么好的理由不重载+(MyTime.__radd___)所以MyDate + MyTime返回一个MyDateTime?

nos*_*klo 16

这已经作为类方法实现,datetime.datetime.combine:

import datetime
d = datetime.date(2010, 12, 5)
t = datetime.time(10, 22, 15)
dt = datetime.datetime.combine(d, t)
print dt
Run Code Online (Sandbox Code Playgroud)

版画

2010-12-05 10:22:15
Run Code Online (Sandbox Code Playgroud)


Eli*_*ght 12

这通常是不赞成的,因为你真的是结合而不是加入; 这就是实际日期时间库具有组合方法而不是以这种方式使用添加的原因.

我不知道在Python任何其他情况下<instance of TypeA> + <instance of TypeB>产生的<instance of TypeC>.因此,最小惊讶原则表明你应该简单地提供一种combine方法而不是过载.

  • 有一些`<TypeA的实例> - <TypeA的实例>`生成`<TypeC的实例>`.例如,取`timedelta = datetime1 - datetime2`. (5认同)