Узнайте, почему файл __init__ существует в пакетах Python.
В Python есть два типа пакетов: обычные пакеты и пакеты пространства имен. Для первого требуется __init__.py файл, а для второго нет. Любой каталог с файлом инициализации python помечается python как пакет и может быть импортирован.
Всякий раз, когда пакет импортируется с использованием import ключевого слова или from x import y синтаксиса, файл инициализации запускается неявно. Как правило, этот файл остается пустым, но его можно использовать для достижения следующих целей:
- Импорт подмодулей
- Инициализировать объекты/переменные верхнего уровня (регистратор, подключения к базе данных, конфигурации)
Работа с __init__.py файлом
Во-первых, давайте создадим каталог с именем my_package и добавим новый файл __init__.pyс этим содержимым.
print("my_package is imported")
С этой настройкой мы теперь можем проверить, my_package можно ли импортировать, используя следующий скрипт:
import my_package
Выход:
my_package is imported
Как мы видим, как только my_package был импортирован файл инициализации, он был запущен. Точно так же можно создать несколько подмодулей с собственным __init__.py файлом. Например:
my_package/
├── __init__.py
├── sub_package_1
│ └── __init__.py
├── sub_package_2
│ └── __init__.py
└── sub_package_3
└── __init__.py
3 directories, 4 files
Аналогичное содержимое записывается во все файлы инициализации, как и в my_package файл инициализации. Затем мы можем импортировать все подмодули:
from my_package import sub_package_1, sub_package_2, sub_package_3
Выход:
my_package is imported sub_package_1 is imported sub_package_2 is imported sub_package_3 is imported