Python соглашения об именах для модулей в подпакетах - PullRequest
0 голосов
/ 04 февраля 2020

Я создаю пакет python, который будет использоваться небольшой группой конечных пользователей ок. 20 человек. Пакет из 3 человек будет еще меньше.

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

  • Начать имя модуля внутри подпакета с подчеркивания? например, _mymodule.py
  • Начать имя подпакета с подчеркивания? например, _mypackage
  • Оба?

Я намерен сообщить конечному пользователю, что эти подпакеты не предназначены для них. Однако эти функции могут потребоваться как служебные функции из других подпакетов и, следовательно, на самом деле не являются «частными».

1 Ответ

0 голосов
/ 04 февраля 2020

Метод внутри класса должен быть объявлен с префиксом __ (двойное подчеркивание). Когда методы имеют префикс __, они считаются закрытыми. Пожалуйста, проверьте код ниже,

класс Base:

# Declaring public method 
def fun(self): 
    print("Public method") 

# Declaring private method 
def __fun(self): 
    print("Private method") 

В этом классе доступ к методу __fun невозможен для объекта ниже, obj1 = Base () obj1 .__ fun ()

Строка obj1 .__ fun () вызовет AttributeError.

...