关于__init__.py

假设程序目录结构如下:

├── checkpoints/
├── data/
│   ├── __init__.py
│   ├── dataset.py
│   └── get_data.sh
├── models/
│   ├── __init__.py
│   ├── AlexNet.py
│   ├── BasicModule.py
│   └── ResNet34.py
└── utils/
│   ├── __init__.py
│   └── visualize.py
├── config.py
├── main.py
├── requirements.txt
├── README.md

可以看到,几乎每个文件夹下都有__init__.py,一个目录如果包含了__init__.py 文件,那么它就变成了一个包(package)。

其中__init__.py可以为空,也可以定义包的属性和方法,但其必须存在,其它程序才能从这个目录中导入相应的模块或函数。

例如在data/文件夹下有__init__.py,则在main.py 中就可以

from data.dataset import DogCat

而如果在data/init.py中写入

from .dataset import DogCat

则在main.py中就可以直接写为:

from data import DogCat

或者

import data;
dataset = data.DogCat

相比于from data.dataset import DogCat更加便捷。

原文地址:https://www.cnblogs.com/Terrypython/p/11527185.html