Python论坛  - 讨论区

标题:[python-chinese] package module import 让我有点晕

2007年03月13日 星期二 16:45

Pickerel Yee pickerel在gmail.com
星期二 三月 13 16:45:40 HKT 2007

ÎÒµÄÏîÄ¿ÊÇÕâÑùµÄ
/src
__init__.py
/src/net
src/net/__init__.py
/src/net/CURLFetcher.py
/src/test.py


CURLFetcherÊÇÒ»¸öclass
ÔÚtest.pyÖÐÈç¹ûÎÒÕâÑùд
from net.CURLFetcher import CURLFetcher
Ò»ÇÐOK£¬ÎÒ¿ÉÒÔÔÚºóÃæµÄ´úÂëÖÐʹÓÃCURLFetcherÀà

¿ÉÊÇÈç¹ûÎÒÕâÑùд from net import CURLFetcher
ÎҾͱØÐëÕâÑù²ÅÄÜʹÓÃÕâ¸öÀà
cf = CURLFetcher.CURLFetcher("http://www.sina.com.cn")

Èç¹ûÎÒÖ±½Óд cf = CURLFetcher("http://www.sina.com.cn")£¬»áµÃµ½´íÎó£º
Traceback (most recent call last):
  File "D:\dev\prj\newzab\newzab\core\test.py", line 3, in 
    CURLFetcher("http://www.sina.com.cn")
TypeError: 'module' object is not callable
ÎÒ°Ñsrc/net/__init__.pyɾÁËÒ²Ò»Ñù¡£

ÎÒÊÇpython³õѧÕߣ¬ÏÖÔÚ±»package moduleµÄÓ÷¨ÒѾ­Óеã¸ßÔÎÁË£¬ÎªÊ²Ã´ CURLFetcher±ØÐë³öÏÖÁ½´Î²ÅÐÐÄØ£¬ÎÒ¾õµÃ
from net import net CURLFetcher
cf = CURLFetcher("http://www.sina.com.cn")
²ÅÓ¦¸Ã×îÕýÈ·Ã÷Á˵Äд·¨°¡£¬ÄÇλ´óϺÄܸøÎÒ½âÊÍÒ»ÏÂѽ¡£
-------------- 下一部分 --------------
Ò»¸öHTML¸½¼þ±»ÒƳý...
URL: http://python.cn/pipermail/python-chinese/attachments/20070313/613955d8/attachment.htm 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年03月13日 星期二 17:01

yi huang yi.codeplayer在gmail.com
星期二 三月 13 17:01:35 HKT 2007

On 3/13/07, Pickerel Yee <pickerel at gmail.com> wrote:
>
>  我的项目是这样的
> /src
> __init__.py
> /src/net
> src/net/__init__.py
> /src/net/CURLFetcher.py
> /src/test.py
>
>
> CURLFetcher是一个class
> 在test.py中如果我这样写
> from net.CURLFetcher import CURLFetcher
> 一切OK,我可以在后面的代码中使用CURLFetcher类
>
> 可是如果我这样写 from net import CURLFetcher
> 我就必须这样才能使用这个类
> cf = CURLFetcher.CURLFetcher("http://www.sina.com.cn")
>
> 如果我直接写 cf = CURLFetcher("http://www.sina.com.cn"),会得到错误:
> Traceback (most recent call last):
>   File "D:\dev\prj\newzab\newzab\core\test.py", line 3, in 
>     CURLFetcher("http://www.sina.com.cn")
> TypeError: 'module' object is not callable
> 我把src/net/__init__.py删了也一样。
>
> 我是python初学者,现在被package module的用法已经有点高晕了,为什么 CURLFetcher必须出现两次才行呢,我觉得
> from net import net CURLFetcher
> cf = CURLFetcher("http://www.sina.com.cn")
> 才应该最正确明了的写法啊,那位大虾能给我解释一下呀。
>
>
>
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>

在你这里 CURLFetcher.py 是一个模块,模块里面又有一个 class CURLFetcher,这两个是不同的对象,如果你想要 class
CURLFetcher 直接出现在 net 名字空间下面,你可以把 class CURLFetcher 写到 net/__init__.py 里面去。

-- 
http://codeplayer.blogspot.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://python.cn/pipermail/python-chinese/attachments/20070313/36ecb0f5/attachment.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年03月13日 星期二 17:06

Zoom.Quiet zoom.quiet在gmail.com
星期二 三月 13 17:06:45 HKT 2007

On 3/13/07, Pickerel Yee <pickerel在gmail.com> wrote:
>
>
> 我的项目是这样的
> /src
> __init__.py
> /src/net
> src/net/__init__.py
> /src/net/CURLFetcher.py
> /src/test.py
>
>
> CURLFetcher是一个class
> 在test.py中如果我这样写
> from net.CURLFetcher import CURLFetcher
> 一切OK,我可以在后面的代码中使用CURLFetcher类
>
> 可是如果我这样写 from net import CURLFetcher
> 我就必须这样才能使用这个类
> cf = CURLFetcher.CURLFetcher("http://www.sina.com.cn")
>
> 如果我直接写 cf = CURLFetcher("http://www.sina.com.cn"),会得到错误:
> Traceback (most recent call last):
>   File "D:\dev\prj\newzab\newzab\core\test.py", line 3, in
> 
>     CURLFetcher("http://www.sina.com.cn")
> TypeError: 'module' object is not callable
> 我把src/net/__init__.py删了也一样。
>
> 我是python初学者,现在被package module的用法已经有点高晕了,为什么 CURLFetcher必须出现两次才行呢,我觉得
> from net import net CURLFetcher
可以使用
from net.CURLFetcher import *
尝试一下?

不用解释,尝试什么样可以,就使用之

> cf = CURLFetcher("http://www.sina.com.cn")
> 才应该最正确明了的写法啊,那位大虾能给我解释一下呀。
>
>
>
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to
> python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to
> python-chinese-request在lists.python.cn
> Detail Info:
> http://python.cn/mailman/listinfo/python-chinese
>


-- 
'''Time is unimportant, only life important!
http://zoomquiet.org
blog在http://blog.zoomquiet.org/pyblosxom/
wiki在http://wiki.woodpecker.org.cn/moin/ZoomQuiet
scrap在http://floss.zoomquiet.org
douban在http://www.douban.com/people/zoomq/
____________________________________
Pls. use OpenOffice.org to replace M$ Office.
     http://zh.openoffice.org
Pls. use 7-zip to replace WinRAR/WinZip.
     http://7-zip.org/zh-cn/
You can get the truely Freedom 4 software.
'''

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年03月13日 星期二 17:10

yi huang yi.codeplayer在gmail.com
星期二 三月 13 17:10:54 HKT 2007

On 3/13/07, Pickerel Yee <pickerel at gmail.com> wrote:
>
>  我的项目是这样的
> /src
> __init__.py
> /src/net
> src/net/__init__.py
> /src/net/CURLFetcher.py
> /src/test.py
>
>
> CURLFetcher是一个class
> 在test.py中如果我这样写
> from net.CURLFetcher import CURLFetcher
> 一切OK,我可以在后面的代码中使用CURLFetcher类
>
> 可是如果我这样写 from net import CURLFetcher
> 我就必须这样才能使用这个类
> cf = CURLFetcher.CURLFetcher("http://www.sina.com.cn")
>
> 如果我直接写 cf = CURLFetcher("http://www.sina.com.cn"),会得到错误:
> Traceback (most recent call last):
>   File "D:\dev\prj\newzab\newzab\core\test.py", line 3, in 
>     CURLFetcher("http://www.sina.com.cn")
> TypeError: 'module' object is not callable
> 我把src/net/__init__.py删了也一样。
>
> 我是python初学者,现在被package module的用法已经有点高晕了,为什么 CURLFetcher必须出现两次才行呢,我觉得
> from net import net CURLFetcher
> cf = CURLFetcher("http://www.sina.com.cn")
> 才应该最正确明了的写法啊,那位大虾能给我解释一下呀。
>

这应该也是 java 的习惯,一个 class 对应一个文件,class 名和文件名相同。

-- 
http://codeplayer.blogspot.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://python.cn/pipermail/python-chinese/attachments/20070313/34a17005/attachment.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年03月13日 星期二 17:16

头太晕 torrycn在gmail.com
星期二 三月 13 17:16:09 HKT 2007

¹þ¹þ¡£ÎÒÔ­À´Ò²ÎªÕâ¸öÔιýÒ»Õó×ÓÄØ¡£¡£¡£ºóÀ´²ÅÃ÷°×ÊÇÔõô»ØÊ¡£
ÏÖÔÚÖÕÓÚÕÒµ½¸úÎÒÒ»ÑùµÄÈËÁË¡£
-------------- 下一部分 --------------
Ò»¸öHTML¸½¼þ±»ÒƳý...
URL: http://python.cn/pipermail/python-chinese/attachments/20070313/d4292065/attachment.htm 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年03月13日 星期二 17:28

YySwing.杨 yang在pyboo.com
星期二 三月 13 17:28:42 HKT 2007

ÎÒûÓöµ½´óÎÊÌ⣬µ«ÊÇÒ²ÊDz»ÊÇÌرðÀí½âÕâÑùµÄÔ­Òò
ÇëÄã½âÊÍһϰɣ¬ºÇºÇ£¬ÎÒѧϰѧϰ
  ----- Original Message ----- 
  From: Í·Ì«ÔÎ 
  To: python-chinese在lists.python.cn 
  Sent: Tuesday, March 13, 2007 5:16 PM
  Subject: Re: [python-chinese]package module import ÈÃÎÒÓеãÔÎ



  ¹þ¹þ¡£ÎÒÔ­À´Ò²ÎªÕâ¸öÔιýÒ»Õó×ÓÄØ¡£¡£¡£ºóÀ´²ÅÃ÷°×ÊÇÔõô»ØÊ¡£
  ÏÖÔÚÖÕÓÚÕÒµ½¸úÎÒÒ»ÑùµÄÈËÁË¡£



------------------------------------------------------------------------------


  _______________________________________________
  python-chinese
  Post: send python-chinese在lists.python.cn
  Subscribe: send subscribe to python-chinese-request在lists.python.cn
  Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
  Detail Info: http://python.cn/mailman/listinfo/python-chinese
-------------- 下一部分 --------------
Ò»¸öHTML¸½¼þ±»ÒƳý...
URL: http://python.cn/pipermail/python-chinese/attachments/20070313/37d81e35/attachment.htm 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年03月13日 星期二 21:25

头太晕 torrycn在gmail.com
星期二 三月 13 21:25:41 HKT 2007

ÔÚ07-3-13£¬YySwing.Ñî <yang在pyboo.com> дµÀ£º
>
>  ÎÒûÓöµ½´óÎÊÌ⣬µ«ÊÇÒ²ÊDz»ÊÇÌرðÀí½âÕâÑùµÄÔ­Òò
> ÇëÄã½âÊÍһϰɣ¬ºÇºÇ£¬ÎÒѧϰѧϰ
>


   - package1
      - package2
         - package4
            - ......
         - module2
            - function1
            - function2
            - class2
            - class3
            - module3
            - ....
            - package3
         - ...
         - module1
         - class4
         - class5
         - function3
         - function4
         - class1

½á¹¹¾ÍÊÇÕâÑùµÄ¡£
Èç¹ûÎÒҪʹÓÃclass3
¾Í
from package1.package2 import module2
obj = module2.class3()

»òÕß
from package2.package2.module2 import class3
obj = class3()

Èç¹ûmoduleµÄÃû×ÖºÍclassµÄÃû×ÖÏàͬ£¬¾ÍÈÝÒ׸ã»ì¡£¾Í»á³öÏÖÂ¥Ö÷µÄÎÊÌâ¡£
-------------- 下一部分 --------------
Ò»¸öHTML¸½¼þ±»ÒƳý...
URL: http://python.cn/pipermail/python-chinese/attachments/20070313/43e0d192/attachment.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年03月14日 星期三 09:07

wentrue guozhuwen在gmail.com
星期三 三月 14 09:07:03 HKT 2007

net.CURLFetcherÊÇÒ»¸öÄ£¿é£¨Îļþ£©£¬
net.CURLFetcher.CURLFetcher²ÅÊÇÎļþÖеÄÒ»¸öÀà¡£
from net.CURLFetcher import CURLFetcherµ¼ÈëµÄÊÇÀ࣬
from net import CURLFetcherµ¼ÈëµÄÊÇÄ£¿é£¨Îļþ£©¡£
ËùÒÔÇ°Õß¿É×÷ΪÀàµ÷Ó㬺óÕßÖ»ÄÜ×÷Ϊģ¿é¶ÔÏóµ÷Ó㬵±È»Õâ¸öÄ£¿é¶ÔÏóÖаüº¬ÁËÒ»¸öÀ࣬
Äã¿ÉÒÔÓÃCURLFetcher.CURLFetcher°ÑËüÈ¡³öÀ´¡£

ÔÚ07-3-13£¬Pickerel Yee <pickerel在gmail.com> дµÀ£º
>
>  ÎÒµÄÏîÄ¿ÊÇÕâÑùµÄ
> /src
> __init__.py
> /src/net
> src/net/__init__.py
> /src/net/CURLFetcher.py
> /src/test.py
>
>
> CURLFetcherÊÇÒ»¸öclass
> ÔÚtest.pyÖÐÈç¹ûÎÒÕâÑùд
> from net.CURLFetcher import CURLFetcher
> Ò»ÇÐOK£¬ÎÒ¿ÉÒÔÔÚºóÃæµÄ´úÂëÖÐʹÓÃCURLFetcherÀà
>
> ¿ÉÊÇÈç¹ûÎÒÕâÑùд from net import CURLFetcher
> ÎҾͱØÐëÕâÑù²ÅÄÜʹÓÃÕâ¸öÀà
> cf = CURLFetcher.CURLFetcher("http://www.sina.com.cn")
>
> Èç¹ûÎÒÖ±½Óд cf = CURLFetcher("http://www.sina.com.cn")£¬»áµÃµ½´íÎó£º
> Traceback (most recent call last):
>   File "D:\dev\prj\newzab\newzab\core\test.py", line 3, in 
>     CURLFetcher("http://www.sina.com.cn")
> TypeError: 'module' object is not callable
> ÎÒ°Ñsrc/net/__init__.pyɾÁËÒ²Ò»Ñù¡£
>
> ÎÒÊÇpython³õѧÕߣ¬ÏÖÔÚ±»package moduleµÄÓ÷¨ÒѾ­Óеã¸ßÔÎÁË£¬ÎªÊ²Ã´ CURLFetcher±ØÐë³öÏÖÁ½´Î²ÅÐÐÄØ£¬ÎÒ¾õµÃ
> from net import net CURLFetcher
> cf = CURLFetcher("http://www.sina.com.cn")
> ²ÅÓ¦¸Ã×îÕýÈ·Ã÷Á˵Äд·¨°¡£¬ÄÇλ´óϺÄܸøÎÒ½âÊÍÒ»ÏÂѽ¡£
>
>
>
>
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
-------------- 下一部分 --------------
Ò»¸öHTML¸½¼þ±»ÒƳý...
URL: http://python.cn/pipermail/python-chinese/attachments/20070314/6716c7a1/attachment.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年03月14日 星期三 09:24

刀巴虫子 acestrong在gmail.com
星期三 三月 14 09:24:53 HKT 2007

呵呵,大家应该都明白了,模块和类的关系。
我还有一个问题,每个目录下的__init__.py是做什么用的呢?

在07-3-14,wentrue <guozhuwen在gmail.com> 写道:
>
> net.CURLFetcher是一个模块(文件),
> net.CURLFetcher.CURLFetcher才是文件中的一个类。
> from net.CURLFetcher import CURLFetcher导入的是类,
> from net import CURLFetcher导入的是模块(文件)。
> 所以前者可作为类调用,后者只能作为模块对象调用,当然这个模块对象中包含了一个类,
> 你可以用CURLFetcher.CURLFetcher把它取出来 。
>
> 在07-3-13,Pickerel Yee <pickerel在gmail.com> 写道:
> >
> >  我的项目是这样的
> > /src
> > __init__.py
> > /src/net
> > src/net/__init__.py
> > /src/net/CURLFetcher.py
> > /src/test.py
> >
> >
> > CURLFetcher是一个class
> > 在test.py中如果我这样写
> > from net.CURLFetcher import CURLFetcher
> > 一切OK,我可以在后面的代码中使用CURLFetcher类
> >
> > 可是如果我这样写 from net import CURLFetcher
> > 我就必须这样才能使用这个类
> > cf = CURLFetcher.CURLFetcher("http://www.sina.com.cn")
> >
> > 如果我直接写 cf = CURLFetcher("http://www.sina.com.cn"),会得到错误:
> > Traceback (most recent call last):
> >   File "D:\dev\prj\newzab\newzab\core\test.py", line 3, in 
> >     CURLFetcher("http://www.sina.com.cn")
> > TypeError: 'module' object is not callable
> > 我把src/net/__init__.py删了也一样。
> >
> > 我是python初学者,现在被package module的用法已经有点高晕了,为什么 CURLFetcher必须出现两次才行呢,我觉得
> > from net import net CURLFetcher
> > cf = CURLFetcher("http://www.sina.com.cn")
> > 才应该最正确明了的写法啊,那位大虾能给我解释一下呀。
> >
> >
> >
> >
> > _______________________________________________
> > python-chinese
> > Post: send python-chinese在lists.python.cn
> > Subscribe: send subscribe to python-chinese-request在lists.python.cn
> > Unsubscribe: send unsubscribe to
> > python-chinese-request在lists.python.cn
> > Detail Info: http://python.cn/mailman/listinfo/python-chinese
> >
>
>
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>



-- 
Best Regards!

Ace Strong

==================================================
Nanjing University of Aeronautics and Astronautics.
College of Civil Aviation
Tao Cheng
E-mail: acestrong在gmail.com ;acestrong在nuaa.edu.cn
Tel: 86-025-84892273
==================================================
-------------- 下一部分 --------------
一个HTML附件被移除...
URL: http://python.cn/pipermail/python-chinese/attachments/20070314/0c231a9f/attachment.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号