Как я должен организовать исходный код Python?

Я начинаю работу с Python (это время, когда я даю ему шанс), и я ищу несколько лучших практик.

Мой первый проект - это очередь, которая запускает эксперименты командной строки в нескольких потоках. Я начинаю получать очень длинный файл main.py, и я хотел бы разбить его. В общем, я ищу: Как программисты python организуют несколько исходных файлов? Есть ли какая-то конкретная структура, которая работает для вас?

Мои конкретные вопросы включают в себя:

  • Должен ли каждый класс находиться в отдельном файле?
  • Как организовать модульные тесты относительно исходного кода?
  • Где я должен помещать комментарии в формате doc, в частности, для командной строки?
  • Если я использую несколько каталогов, как мне импортировать классы между ними?

Я, наверное, могу сделать некоторые из моих собственных выводов здесь проб и ошибок, но я предпочел бы начать с чего-то хорошего.

Ответ 1

статья, на которую указывает Эрик, является удивительной, поскольку она охватывает детали организации больших баз кода Python.

Если вы приземлились здесь из Google и пытаетесь выяснить, как разбить один большой исходный файл на несколько более управляемых файлов, я кратко изложил процесс.

Предположим, что у вас есть все в файле с именем main.py:

  • Создайте еще один исходный файл в той же папке (позвольте нам использовать наш utils.py для этого примера)
  • Переместите все классы, функции, инструкции и т.д. с main.py в utils.py
  • В main.py добавьте одну строку вверху: import utils

Концептуально, что это такое, нужно создать новый модуль под названием utils в другом исходном файле. Затем вы можете импортировать его там, где это необходимо.

Ответ 2

Как вы должны организовать свой код и тесты, точно так же, как и для любого языка OO.

Ответы на то, как я это делаю. Возможно, это неправильно, но работает для меня.

  • Зависит от того, как распределяются ваши функции. Для моего основного приложения python у меня есть 1 файл с классами для точек входа, а затем пакеты с различными битами функциональности.
  • Я использую PyDev для eclipse и организую его, как я бы хотел для Java.
>  Workspace
>     |
>     |-Src
>     |   |-Package1
>     |   |-Package2
>     |   |-main.py
>     |-Test
>         |-TestPackage1
>         |-TestPackage2
  1. Используйте DocString везде, чтобы отслеживать все.
  2. Убедившись, что соответствующие файлы __init__.py находятся в папках. его просто простой случай from module import class