[Python-Dev] PEP 495 accepted
Tim Peters
tim.peters at gmail.com
Tue Sep 22 22:25:31 CEST 2015
[Guido]
>> it is broken, due to the confusion about classic vs. timeline arithmetic
>> -- these have different needs but there's only one > operator.
[Alex]
> I feel silly trying to defend a design against its author. :-)
"Design" may be an overstatement in this specific case ;-)
I remember implementing this stuff, getting to the comparison
operators, and noting that the spec was silent about what to do in
case the tzinfos differed. I looked at Guido and explained that, and
asked "so whaddya wanna do?".
One of us (I don't recall which) said "well, we could convert to UTC
first - that would make sense". "Ya, sure," said the other. And I
said "and then, of course, interzone subtraction should do the same."
"Of course," said Guido, now annoyed that I was bothering him with the
obvious ;-)
Note that, near that time, Python blithely compared _any_ two objects,
even if of wildly different types. Compared to that, doing _anything_
arguably sane with datetime objects seemed wildly desirable.
Ironically, the datetime implementation was Python's first library
type to _refuse_ to compare its objects to others of wildly different
types.
So, in all, I'd say well under a minute's thought - between us - went
into this decision. And we've been living in Paradise ever since :-)
> Yes, a language with more than one > symbol would not have some
> of these problems. Similarly a language with a special symbol for
> string catenation would not have a non-commutative + and non-
> distributive *. All I am saying is that I can live with the choices made
> in datetime.
Given that the alternative is suicide, I approve of that life decision.
More information about the Python-Dev
mailing list