Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #47774

Re: Questions on "import" and "datetime"

Newsgroups comp.lang.python
Date 2013-06-12 03:41 -0700
References <c854d114-bcfa-4491-8a4a-a377998bdf0e@googlegroups.com> <CAKJDb-PRL1hXOZxrhjjFJN_AgKu33yzgLjd_mNgesx1Yvee6aQ@mail.gmail.com> <mailman.2978.1370891438.3114.python-list@python.org>
Message-ID <f91dbdc5-b8a3-420c-ab67-336bb74c2e10@googlegroups.com> (permalink)
Subject Re: Questions on "import" and "datetime"
From Yunfei Dai <yunfei.dai.sigma@gmail.com>

Show all headers | View raw


On Monday, June 10, 2013 9:10:16 PM UTC+2, Dave Angel wrote:
> On 06/10/2013 01:01 PM, Zachary Ware wrote:
> 
> > On Mon, Jun 10, 2013 at 10:37 AM, Yunfei Dai <yunfei.dai.sigma@gmail.com> wrote:
> 
> >> Hi all,
> 
> >
> 
> > Hi Yunfei,
> 
> >
> 
> >>
> 
> >> I have some questions on "import":
> 
> >>
> 
> >> 1."from datetime import datetime" works well. But I am confused why "import datetime.datetime" leads to importerror. "from xlrd import open_workbook" could be replaced by "from xlrd.open_workbook" without any problem.
> 
> >
> 
> 
> 
> It's a historical flaw in datetime that the class has the same name as 
> 
> the module it's in.  It should have been called class Datetime 
> 
> (according to pep 10, class names should be capitalized).  If that were 
> 
> the case, it'd be clear that datetime.Datetime is a class.
> 
> 
> 
> It would also be clearer that
> 
>      from datetime import Datetime
> 
> 
> 
> creates an alias in the present global namespace for the 
> 
> datetime.Datetime class, as simply Datetime.
> 
> 
> 
> This class has attributes that you can access, like Datetime.hour, and 
> 
> it has static methods like Datetime.fromTimeStamp().
> 
>   And like all classes, it's "callable", meaning that you can create an 
> 
> instance by pretending it's a function:
> 
>     obj = Datetime(2013, 12, 1)
> 
> 
> 
> But since it's not a module inside a package, you can't use the form:
> 
> 
> 
> import datetime.Datetime
> 
> 
> 
> Now, just interpret all the above with a lowercase "D" and the confusion 
> 
> becomes clearer.  The compiler/interpreter doesn't care either way.
> 
> 
> 
>     <SNIP>
> 
> > "from ... import ..." imports an object from a module and assigns it
> 
> > to a local name that is the same as the name in the other module.  In
> 
> > other words, the following two examples do the same thing:
> 
> >
> 
> > from foo import bar
> 
> >
> 
> > import foo;bar = foo.bar
> 
> >
> 
> > If foo.bar happens to be a module (module 'bar' in package 'foo'), you
> 
> > could also do this:
> 
> >
> 
> > import foo.bar as bar
> 
> >
> 
> > ...and that restriction is where your problem lies.
> 
> >
> 
> 
> 
> In other words, since datetime.datetime is a class, not a module, you 
> 
> can't just import it.
> 
> 
> 
>      <SNIP>
> 
> >
> 
> >> 2.I am also comfused that "datetime.datetime" is a function but whithin "datetime.datetime" there are lots of other functions. So what is the type of "datetime.datetime" on earth? is it a function, or a class or a folder(library) here?
> 
> >
> 
> 
> 
> As I said before, datetime.datetime is a class, and the functions within 
> 
> it are called methods.
> 
> 
> 
> You can see it all for yourself very easily.  Use the __file__ attribute 
> 
> to locate the source for datetime module on your system.  Here's what it 
> 
> looks like on mine:
> 
> 
> 
>  >>> import datetime
> 
>  >>> datetime.__file__
> 
> '/usr/local/lib/python3.3/datetime.py'
> 
> 
> 
> Then you can go look at that file.  For my copy, the datetime class 
> 
> begins at 1301.  But you can just search for the following line:
> 
> 
> 
> 
> 
> 
> 
> class datetime(date):
> 
> 
> 
> HTH
> 
> 
> 
> -- 
> 
> DaveA

Thank you Dave for your reply! It is very helpful.

Back to comp.lang.python | Previous | NextPrevious in thread | Find similar | Unroll thread


Thread

Questions on "import" and "datetime" Yunfei Dai <yunfei.dai.sigma@gmail.com> - 2013-06-10 08:37 -0700
  Re: Questions on "import" and "datetime" Zachary Ware <zachary.ware+pylist@gmail.com> - 2013-06-10 12:01 -0500
    Re: Questions on "import" and "datetime" Yunfei Dai <yunfei.dai.sigma@gmail.com> - 2013-06-12 03:29 -0700
  Re: Questions on "import" and "datetime" Dave Angel <davea@davea.name> - 2013-06-10 15:10 -0400
    Re: Questions on "import" and "datetime" Yunfei Dai <yunfei.dai.sigma@gmail.com> - 2013-06-12 03:41 -0700

csiph-web