Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #40907
| References | <roy-3BFD51.13412708032013@70-1-84-166.pools.spcsdns.net> <pan.2013.03.08.21.33.44.615000@nowhere.com> |
|---|---|
| Date | 2013-03-09 09:01 +1100 |
| Subject | Re: Why are timezone aware and naive datetimes not distinct classes? |
| From | Chris Angelico <rosuav@gmail.com> |
| Newsgroups | comp.lang.python |
| Message-ID | <mailman.3104.1362780081.2939.python-list@python.org> (permalink) |
On Sat, Mar 9, 2013 at 8:33 AM, Nobody <nobody@nowhere.com> wrote: > On Fri, 08 Mar 2013 13:41:27 -0500, Roy Smith wrote: > >> So, the question is, WHY aren't aware and naive datetimes separate >> classes? They share many attributes and methods, but not all. > > They share all attributes and methods. > > You could just as well ask why positive and negative floats aren't > separate classes (based upon the fact that e.g. math.sqrt() and math.log() > raise domain errors for negative floats). > > Just because certain operations aren't defined for all values (or all > combinations of values), that doesn't make the values where those > operations aren't defined into a distinct type. They represent different things, though. A naive datetime is kinda like an integer - an abstract thing that has meaning only as the programmer gives it meaning; an aware datetime unambiguously represents an instant in time. SQL has completely different data types for "TIMESTAMP WITHOUT TIME ZONE" and "TIMESTAMP WITH TIME ZONE". As I see it, a naive datetime simply does not have a timezone. The fact that it may have an attribute that's set to None doesn't mean that it "shares all attributes" with aware datetimes; if they were implemented completely separately (without even a common base class), the most obvious difference would be the complete absence of timezone attribute on the naive type. Conceptually, Roy's notion of a common base class makes good sense. But I can't speak for the Python datetime module as I've hardly used it; there may be practical considerations that mean the current model works better. All I can say is, there's definitely more difference between aware and naive datetimes than there is between positive and negative floats. ChrisA
Back to comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Why are timezone aware and naive datetimes not distinct classes? Roy Smith <roy@panix.com> - 2013-03-08 13:41 -0500
Re: Why are timezone aware and naive datetimes not distinct classes? Nobody <nobody@nowhere.com> - 2013-03-08 21:33 +0000
Re: Why are timezone aware and naive datetimes not distinct classes? Chris Angelico <rosuav@gmail.com> - 2013-03-09 09:01 +1100
Re: Why are timezone aware and naive datetimes not distinct classes? Nobody <nobody@nowhere.com> - 2013-03-09 19:14 +0000
Re: Why are timezone aware and naive datetimes not distinct classes? Roy Smith <roy@panix.com> - 2013-03-09 14:40 -0500
Re: Why are timezone aware and naive datetimes not distinct classes? Nobody <nobody@nowhere.com> - 2013-03-09 23:38 +0000
Re: Why are timezone aware and naive datetimes not distinct classes? Chris Angelico <rosuav@gmail.com> - 2013-03-10 09:28 +1100
Re: Why are timezone aware and naive datetimes not distinct classes? Adam Tauno Williams <awilliam@whitemice.org> - 2013-03-11 13:27 -0400
Re: Why are timezone aware and naive datetimes not distinct classes? djc <djc@kangoo.invalid> - 2013-03-11 20:32 +0000
csiph-web