Python 为什么';"__全部;具有“预期效果”;导入*“;?
文件结构:Python 为什么';"__全部;具有“预期效果”;导入*“;?,python,Python,文件结构: /\uuuu init\uuuuu.py a、 派克 /解放党 __初始值 Foo1.py#包含`class Foo1` Foo2.py#包含`class Foo2` #等等。。。 在a.py中对此进行了测试,并进行了工作 从lib.Foo1导入Foo1 从lib.Foo2导入Foo2 但是,当我从lib import*中执行时,\uuuuuu all\uuuuu=[“Foo1”,“Foo2”]在\uuu init\uuuuuuuuuuy.py中的不起作用 错误::“模块”对象不
/\uuuu init\uuuuu.py
a、 派克
/解放党
__初始值
Foo1.py#包含`class Foo1`
Foo2.py#包含`class Foo2`
#等等。。。
在a.py
中对此进行了测试,并进行了工作
从lib.Foo1导入Foo1
从lib.Foo2导入Foo2
但是,当我从lib import*中执行时,\uuuuuu all\uuuuu=[“Foo1”,“Foo2”]
在\uuu init\uuuuuuuuuuy.py
中的不起作用
错误::“模块”对象不可调用
我错过了什么
这里是a.py
#!/usr/bin/python
import cgi, cgitb
cgitb.enable()
from lib import *
print "Content-Type: text/html"
print ""
print "Test!"
foo1 = Foo1()
foo2 = Foo2()
使用这些参考文献:
将以下内容添加到您的文件中
from Foo1 import Foo1
from Foo2 import Foo1
__all__ = ['Foo1', 'Foo2']
请注意,PEP-8建议这样做以避免混淆
from lib import *
将把lib
中的所有内容导入到当前模块,因此我们的globals()
如下所示:
{'Foo1':<module lib.Foo1>,
'Foo2':<module lib.Foo2>}
使我们的globals()
成为
{'Foo1':<class lib.Foo1.Foo1>,
'Foo2':<class lib.Foo2.Foo2>}
{'Foo1':,
'Foo2':}
因此,在第一种情况下,我们只是导入模块,而不是其中的类,这正是我们想要的。从包导入*
时(在您的情况下,使用init.py
中的\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
指定应加载并导入当前命名空间的所有模块
因此,在您的情况下,from lib import*
将导入模块Foo1
和Foo2
,您需要像这样访问类:
foo1 = Foo1.Foo1()
foo2 = Foo2.Foo2()
请看一看以快速澄清
foo1 = Foo1.Foo1()
foo2 = Foo2.Foo2()