Как я должен организовать исходный код 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
- Используйте DocString везде, чтобы отслеживать все.
- Убедившись, что соответствующие файлы
__init__.py
находятся в папках. его просто простой случай from module import class