Python _uuuinit_uuuuu.py的目的。或者:为什么把代码放在_init__u; py而不是模块中?
我正在检查Django的代码。它有以下软件包:Python _uuuinit_uuuuu.py的目的。或者:为什么把代码放在_init__u; py而不是模块中?,python,django,Python,Django,我正在检查Django的代码。它有以下软件包: ➜ django pwd /Users/ugur/.virtualenvs/evernote/lib/python3.6/site-packages/django ➜ django tree -L 1 . ├── __init__.py ├── __main__.py ├── __pycache__ ├── apps ├── bin ├── conf ├── contrib ├── core ├── db ├── dispatch ├── fo
➜ django pwd
/Users/ugur/.virtualenvs/evernote/lib/python3.6/site-packages/django
➜ django tree -L 1
.
├── __init__.py
├── __main__.py
├── __pycache__
├── apps
├── bin
├── conf
├── contrib
├── core
├── db
├── dispatch
├── forms
├── http
├── middleware
├── shortcuts.py
├── template
├── templatetags
├── test
├── urls
├── utils
└── views
现在,我深入到db/
中的包中,试图理解其结构
例如,我在创建模型时经常使用的类有:
models.CharField
models.TextField
models.IntegerField
db/models/fields/\uuuu init\uuuuu.py
查看该\uuuu init\uuuuuuuy.py
文件,我发现超过2300行代码
我使用\uuuuu init\uuuuuuuuuupy.py
文件向解释器指示文件夹是由模块组成的包
另外,通过dir(myobject)
检查对象的属性,我可以看到\uuuuuuuuuuuuuuuuuuu文件
属性指向\uuuuuuuuu init.py
文件。例如dir(django)
:
此文件的用途是什么?假设您有以下布局:
my_package/
__init__.py
my_module.py
然后,一个空白的\uuuuu init\uuuuuu.py
将要求您编写
import my_package.my_module
my_package.my_module.hello()
但是,您可以将可执行代码放入\uuu init\uuuuuuuu.py
中,只要导入我的\u包,即可执行
例如,如果你把
# __init__.py
import my_module
进入\uuuu init\uuuuu.py
后,您现在可以简化导入:
import my_package
my_package.my_module.hello()
您还可以进一步修改\uuuu init\uuuu.py
:
# __init__.py
from my_module import hello
所以
import my_package
my_package.hello()
有效。回答得很好!非常感谢。
import my_package
my_package.hello()