python中datetime.date的不稳定行为

时间:2012-06-27 18:48:37

标签: python debugging datetime

我在调试看起来像是来自datetime.date的不稳定行为时,得到了这个完全荒谬的会话

这是成绩单(添加了一些#comments)。不幸的是,我没有设法找到我如何得到我的'd'值(它通过随机生成的日期/数字的多个聚合获得)

>>> d
[datetime.date(2027, 1, 1), datetime.date(2013, 3, 26)]
>>> d2 = [datetime.date(2027, 1, 1), datetime.date(2013, 3, 26)]
>>> d == d2                      # ok so no misunderstanding
True
>>> min(d)
datetime.date(2027, 1, 1)        # ???
>>> min(d2)
datetime.date(2013, 3, 26)       # fine
>>> max(d)
datetime.date(2013, 3, 26)       # ?!?
>>> max(d2)
datetime.date(2027, 1, 1)        # fine

我知道我问了很多,但任何人都可以了解这种荒谬情况的可能来源吗?我尝试重新启动我的编辑器(Eric)并且它可能与调试器有关,但是当我在没有调试器的情况下运行时,我经常遇到的问题(即一些奇怪的数字)也会发生。

1 个答案:

答案 0 :(得分:1)

嗯......傻傻的我。问题在于我将datetime.date子类化,因此d中的对象实际上就是子类。现在我需要弄清楚为什么比较仍然会产生平等。

这里的内容是,我认为没有得到一个repro,我可以使用'pickle'并导出我的变量供其他人检查。正如我那样,我发现我的子类正被使用。

这就是我所做的:

>>> import pickle
>>> pickle dumps([d,d2])
>>> # some stuff showing the library/subclass

抱歉麻烦 - 希望你不要因此而投票给我!