Python: поддержка кода в модулях - PullRequest
7 голосов
/ 20 октября 2011

Я строю проект и столкнулся со следующей проблемой:

Я реализовал несколько подклассов, каждый из которых имеет около 250 строк кода.Семантически, они должны идти вместе в одном модуле, и я хочу импортировать их с

from mymodule import SubclassA, SubclassB

Но тогда мой файл модуля имеет тысячи строк, что делает поддержку кода довольно неприятной.Теперь у меня есть каждый класс в отдельном файле, чтобы его было проще поддерживать, но я должен использовать его следующим образом:

from subclassa import SubclassA
from subclassb import SubclassB

это не имеет никакого смысла, и это действительно ужасно.

Есть ли элегантное решение?Если нет, то что из вышеперечисленного является лучшим решением?

Ответы [ 3 ]

5 голосов
/ 20 октября 2011

Вы всегда можете поместить from subclassa ... импорт в ваш пакет __init__.py, как вы показали во втором листинге.Затем они будут доступны непосредственно из вашей посылки, как вы написали в своем первом листинге.

1 голос
/ 20 октября 2011

Я предпочитаю второе решение, с отдельными файлами. Импорт не так уж и ужасен.

Если они вас так сильно беспокоят, вы можете заключить их в еще один файл, а затем импортировать все классы из этого файла. Таким образом, ваш основной импорт будет выглядеть как первое решение, но единственным содержимым файла mymodule будет код во втором решении.

0 голосов
/ 20 октября 2011

Вы можете импортировать оба класса в модуле mymodule из их соответствующих файлов:

import SubclassA, SubclassB

и затем в других проектах вы можете просто импортировать эти классы из этого модуля:

from mymodule import SubclassA, SubclassB

Дайте мне знать, если это то, что вы ищете.

...