擅长:python、mysql、java
<p>你只需要在你的<code>FakeDate</code>类中定义一个<code>__add__</code>方法它是控制<code>+</code>操作符行为的方法。在</p>
<pre><code>import datetime
class FakeDate(datetime.date):
@classmethod
def today(cls):
return cls(1999, 12, 31)
def __add__(self, delta):
# Create a datetime.date object so we don't need to do any calculations
new_date = super(FakeDate, self).__add__(delta)
# Then convert it to FakeDate.
return FakeDate(new_date.year, new_date.month, new_date.day)
# Returns a FakeDate for 2000-01-01
FakeDate.today() + datetime.timedelta(days=1)
</code></pre>
<p>注意,这只处理<code>fakedate + timedelta</code>情况。如果您希望<code>timedelta + fakedate</code>也返回<code>FakeDate</code>的实例,那么还需要定义<code>__radd__</code>方法(与<code>__add__</code>相同的代码)。在</p>
<p>有关与运算符关联的<code>__magic_methods__</code>的详细信息,请参见<a href="http://docs.python.org/2/reference/datamodel.html#emulating-numeric-types" rel="nofollow">http://docs.python.org/2/reference/datamodel.html#emulating-numeric-types</a>。在</p>