В Python, что является подчеркиванием перед переменной экземпляра?

Какое это соглашение?

class IndexedText(object):
    def __init__(self, stemmer, text):
        self._text = text
        self._stemmer = stemmer
        self._index = nltk.Index((self._stem(word), i) for (i, word) in enumerate(text))

Ответ 1

_ сигнализирует, что это частные члены. Это никак не связано с языком, так как программисты Python - это " согласные взрослые.

Ответ 2

Согласно PEP 8:

Кроме того, следующие специальные формы с использованием ведущих или конечных    признаются знаки подчеркивания (их обычно можно комбинировать с любым случаем    конвенции):

  • _single_leading_underscore: слабый индикатор "внутреннего использования". Например. "от М  import *" не импортирует объекты, имя которых начинается с подчеркивания.

На самом деле это не относится к использованию одного подчеркивания в члене класса, но они, как правило, используются для обозначения "внутреннего использования". Для более сильной версии одного и того же, используйте два ведущих символа подчеркивания (например, self.__foo). Python сделает более сильную попытку предотвратить случайное перезаписи подклассов, но определенный код может, конечно, сделайте это.

Ответ 3

Это подразумевает только внутреннее использование (аналогично частному на других языках), но не ограничено, как и другие языки.

Ответ 4

Это соглашение, согласно которому клиенты класса/объекта должны избегать использования этих атрибутов, если это возможно, так как они предназначены для внутреннего использования.

Ответ 5

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

Предположим, вы редактируете какой-то существующий код, и перед ними видны переменные с подчеркиванием. это означает, что вы не должны редактировать их. Просто предупреждение.

так

self.name = a

self._name =a

self.__name=a

все те же