Python: «Частный» модуль в пакете

У меня есть пакет mypack с модулями mod_a и mod_b в нем. Я намерен сам пакет и mod_a импортировать свободно:

import mypack
import mypack.mod_a

Однако я хотел бы оставить mod_b для эксклюзивного использования mypack. Это потому, что он существует просто для организации внутреннего кода последнего.

Мой первый вопрос: является ли общепринятой практикой в ​​программировании на Python иметь подобные «приватные» модули?

Если да, мой второй вопрос: как лучше всего передать это? намерение к клиенту? Должен ли я ставить перед именем подчеркивание (т. Е. _mod_b)? Или было бы неплохо объявить подпакет private и поместить туда все такие модули?

38
задан Frederick The Fool 29 September 2011 в 02:41
поделиться

1 ответ

Python строго не знает и не поддерживает "частные" или "защищенные" методы или классы. Существует соглашение, согласно которому методы с префиксом в виде символа подчеркивания не являются частью официального API, но я бы не стал делать это с классами или файлами — это некрасиво.

Если кому-то действительно нужно создать подкласс или получить доступ к mod_b, зачем мешать ему/ей это делать? Вы всегда можете указать предпочтительный API в своей документации и задокументировать в своем модуле, что вам не следует обращаться к нему напрямую и вместо этого использовать mypack.

1
ответ дан 27 November 2019 в 03:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: