gpt4 book ai didi

python - 如何用 __init__.py 组织代码?

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

我刚刚开始使用 google app engine,并且一直在寻找好的做法和代码组织。我的大部分问题都来自 __init__.py 的混淆。

我目前的测试结构是这样的

/website
main.py
/pages
__init__.py #1
blog.py
hello2.py
hello.py
/sub
__init__.py #2
base.py

我正在尝试将 main.py 用作一个文件,该文件仅指向/pages 和/pages/sub 中的所有内容。/pages 中的大多数模块共享几乎所有相同的导入(例如 import urllib),是否有一种方法可以定义/pages 中的所有内容都导入我想要的而不是将其添加到每个单独的模块中?

目前在 __init__.py #1 我有

from sub.base import *

但是我的模块 blog.py 说 BaseHandler(base.py 中的一个函数)未定义。我的最终目标是拥有类似...

main.py
from pages import *
#be able to call any function in /pages without having to do blog.func1() or hello.func2()
#rather just func1() and func2()

并且能够在 __init__.py/pages 中共享模块的通用导入。这样他们就可以共享例如 urllib 和 base.py 中的所有函数。感谢您花时间阅读这篇文章,期待您的见解。

最佳答案

听起来您认为 __init__.py 是包中其他模块的初始化程序。它不是。它将 pages 变成一个包(允许它的文件和子目录成为模块),当您的程序调用 import pages 时,它就像一个普通模块一样被执行。假设它被命名为 pages.py

所以如果你真的想把所有东西都转储到同一个命名空间,init #2 可以包含 from base import *(这会将 base 中的所有东西导入到sub), blog.py 可以包含 from sub import *。明白了吗?

关于python - 如何用 __init__.py 组织代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11282924/

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