Узнайте, почему файл __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

 


0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии