0

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) を再起動しようとしましたが、デバッガーに関連している可能性がありますが、デバッガーなしで実行すると、通常発生する問題 (つまり、いくつかの奇妙な数値) も発生します。

4

1 に答える 1

1

うーん...ばかげた私。問題は、datetime.dateをサブクラス化したため、dのオブジェクトが実際にはそのサブクラスであったことです。今、私は比較がまだ平等をもたらす理由を理解する必要があります。

ここでのポイントは、再現を取得する前に、「pickle」を使用して、他の人が検査できるように変数をエクスポートできると考えたことです。そうしてみると、自分のサブクラスが使用されていることがわかりました。

これは私がしたことです:

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

面倒でごめんなさい-あなたが私をそれに投票しないことを願っています!

于 2012-06-27T19:00:04.907 に答える