макет модуля Python - PullRequest
       4

макет модуля Python

14 голосов
/ 08 ноября 2010

В своих проектах на python я только начинаю понимать, что мне нужно начать использовать несколько пакетов, и я немного запутался, как именно все должно работать вместе.Что именно должно войти в __init__.py пакета?У некоторых проектов, которые я вижу, просто пустые начальные значения, и весь их код находится в модулях этого пакета.Другие проекты реализуют то, что кажется большинством классов и функций пакета внутри init.

Есть ли документ или руководство по стилю или что-то, что описывает то, что авторы Python имели в виду для использования пакетов и__init__ файл и тому подобное?

Редактировать:
Я знаю смысл иметь файл __init__.py в простейшем смысле, что он делает папку пакетом.Но зачем мне помещать туда функцию вместо модуля в той же папке (пакете)?

Ответы [ 2 ]

8 голосов
/ 08 ноября 2010

__init__.py может быть пустым, но на самом деле он должен убедиться, что Python правильно обрабатывает ваши каталоги, обеспечивает любую инициализацию, которая может вам понадобиться при импорте вашего пакета (настройка среды или чего-то в этом духе) или определение __all__, чтобы Python знал, что делать, когда кто-то использует from package import *.

Большинство всего, что вам нужно знать, описано в документах по пакетам . Dive Into Python также имеет кусок на упаковке.

1 голос
/ 08 ноября 2010

Вы уже знаете, я предполагаю, что файлы __init__.py необходимы для того, чтобы Python рассматривал каталоги как пакеты.

  1. В приведенной выше модели __init__.py может оставаться пустым.

  2. Вы также можете выполнить код инициализации для пакета.

  3. Вы также можете установить переменную __all__.

[Редактировать: учения] Когда вы делаете "из элемента импорта пакета" или "из импорта пакета *", тогда переменная __all__ может использоваться для импорта выбранных пакетов.

См .: http://docs.python.org/tutorial/modules.html

...