Закрытые переменные.
В Питоне пока очень ограниченная поддержка закрытых(private) элементов класса, то есть элементам, доступным только членам данного класса. Применение таких элементов соответствует принципу сокрытия информации и исключает бесконтрольное изменение важных полей класса вне его. Рассмотрим механизм таких элементов.
Если вы объявляете какой-либо элемент, начиная его с двойного подчёркивания, то он автоматически становится закрытым и обращение к нему вне класса вызывает синтаксическую ошибку, в то время как обращение через self является приемлемым:
>>> class Test2: ... __foo = 0 ... def set_foo(self, n): ... if n > 1: ... self.__foo = n ... print self.__foo ... >>> x = Test2() >>> x.set_foo(5)
5
>>> x.__foo Traceback (most recent call last): File "<interactive input>", line 1, in ? AttributeError: Test2 instance has no attribute '__foo'
Кроме этого закрытой является также переменная, содержащаяся в любом модуле __dict__.