gpt4 book ai didi

python - 为什么 "__all__"对 "import *"没有预期的效果?

转载 作者:太空宇宙 更新时间:2023-11-03 12:59:33 25 4
gpt4 key购买 nike

文件结构:

./__init__.py
a.py
/lib
__init__.py
Foo1.py # contains `class Foo1`
Foo2.py # contains `class Foo2`
# so on ...

a.py 中对此进行了测试并工作,这样做;

from lib.Foo1 import Foo1
from lib.Foo2 import Foo2

但是,当我做 from lib import * __all__ = ["Foo1", "Foo2"]__init__.py它不起作用。

错误:<type 'exceptions.TypeError'>: 'module' object is not callable

我错过了什么?

这里是 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()

使用了这些引用:
http://docs.python.org/2/tutorial/modules.html#importing-from-a-package
How to load all modules in a folder?

最佳答案

from lib import *

lib 中的所有内容导入当前模块,所以我们的 globals() 看起来像:

{'Foo1':<module lib.Foo1>,
'Foo2':<module lib.Foo2>}

鉴于

from lib.Foo1 import *
from lib.Foo2 import *

让我们的 globals() 变成

{'Foo1':<class lib.Foo1.Foo1>,
'Foo2':<class lib.Foo2.Foo2>}

所以在第一种情况下,我们只是导入模块,而不是我们想要的其中的类。

关于python - 为什么 "__all__"对 "import *"没有预期的效果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27494410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com