> I was surprised to discover that
>
> >>> import datetime
> >>> x = datetime.date(2004, 9, 14)
> >>> y = datetime.datetime(2004, 9, 14, 6, 43, 15)
> >>> print x == y
> True
>
> How can these two objects be considered equal?
They should not be. Please open a bug report. The
problem is due to that datetime.datetime is a subclass
of datetime.date:
>>> isinstance(y, datetime.date) True
>>>
and date's comparison implementation believes that
instances of date subclasses can be compared as if
they *were* dates. Indeed, since a datetime.datetime
is-a datetime.date, it's a bit hard to see why that
shouldn't be allowed, and offhand I don't know of a
principled way to fix this without breaking existing code
that compares instances of user-defined subclasses of
datetime.date to instances of datetime.date.
|