Jess Austin <jess.aus...@gmail.com> added the comment:

To be systematic, without the patch:

>>> D(1900, 1, 1) > DT(1900, 1, 1)
False
>>> D(1900, 1, 1) < DT(1900, 1, 1)
False
>>> DT(1900, 1, 1) > D(1900, 1, 1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can't compare DT to D
>>> DT(1900, 1, 1) < D(1900, 1, 1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can't compare DT to D


with the patch:

>>> D(1900, 1, 1) > DT(1900, 1, 1)
True
>>> D(1900, 1, 1) < DT(1900, 1, 1)
False
>>> DT(1900, 1, 1) > D(1900, 1, 1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can't compare DT to D
>>> DT(1900, 1, 1) < D(1900, 1, 1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can't compare DT to D


It might seem like the latter behavior is marginally better, but really this is 
just a mess, since a date-datetime comparison TypeErrors in all directions.  I 
appreciate Alexander's more experienced perspective, but it's not obvious to me 
that this problem is insoluble simply due to OOP algebra.  I'm going to keep 
tinkering with this to see if there isn't a way to satisfy his concerns AND fix 
these bugs WITHOUT breaking the established (and admittedly anti-OOP) behavior 
that dates are not equal to datetimes.

(Incidentally, the test I removed still seems to be an arbitrary ad-hoc 
requirement that subclasses of date behave differently than date itself.  I 
don't see how one could rely on this given the other inconsistencies with date 
subclasses, and so violating this in order to fix more serious problems seems 
acceptable.)

I'm reminded of the set and frozenset situation, which seems almost dual to 
this one.  set and frozenset don't inherit from each other, but they do 
compare.  This seems to bite you only when you try to redefine comparison in 
subclasses.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue5516>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to