У меня есть пакет mypack
с модулями mod_a
и mod_b
в нем. Я намерен сам пакет и mod_a
импортировать свободно:
import mypack
import mypack.mod_a
Однако я хотел бы оставить mod_b
для эксклюзивного использования mypack
. Это потому, что он существует просто для организации внутреннего кода последнего.
Мой первый вопрос: является ли общепринятой практикой в программировании на Python иметь подобные «приватные» модули?
Если да, мой второй вопрос: как лучше всего передать это? намерение к клиенту? Должен ли я ставить перед именем подчеркивание (т. Е. _mod_b
)? Или было бы неплохо объявить подпакет private
и поместить туда все такие модули?
Python строго не знает и не поддерживает "частные" или "защищенные" методы или классы. Существует соглашение, согласно которому методы с префиксом в виде символа подчеркивания не являются частью официального API, но я бы не стал делать это с классами или файлами — это некрасиво.
Если кому-то действительно нужно создать подкласс или получить доступ к mod_b, зачем мешать ему/ей это делать? Вы всегда можете указать предпочтительный API в своей документации и задокументировать в своем модуле, что вам не следует обращаться к нему напрямую и вместо этого использовать mypack.