netvis
То есть что-то типа __cutLine() - это по-джентельменски закрытая функция?
Это во всём программировании так (касаемо языков программирования - как части всей теории программирования). Есть одно подчёркивание, его не используют, потому что оно может наскочить на уже существующие служебные имена, определённые в компиляторах. Поэтому используют двойное подчёркивание, чтобы вводить именно пользовательские служебные имена. Служебные имена - имена, не предназначенные для использования пользователем (программистом-пользователем), их программа использует для себя. Это в общем контексте, для “всех языков”.
Есть также и правила о подчёркиваниях в именах, введённые только в питоне
https://www.python.org/dev/peps/pep-0008/#naming-conventionsОдно подчёркивание в начале просто скрывает имя из внешнего описания модуля, то есть оно скрывается из документации, не участвует в импорте по звёздочке и вообще не предназначено для использования снаружи, только для внутреннего использования.
Два подчёркивания в начале действуют на наследование, такие имена как бы не наследуются и их в наследнике можно делать заново.
>>> class A:
... _x = 1
... __y = 2
...
>>> class B(A):
... def m1(self):
... print(self._x)
... def m2(self):
... print(self.__y)
...
>>> b = B()
>>> b.m1()
1
>>> b.m2()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 5, in m2
AttributeError: 'B' object has no attribute '_B__y'
>>>
Ну и есть магические имена с двумя подчёркиваниями с обеих сторон имени. Это тоже служебные имена, но используемые самим питоном. Почему магические - потому что при их использовании происходит волшебство, объекты можно превращать в какие-то штуки.
>>> class A:
... def __add__(self, v):
... print('Ко мне "прибавили"', v)
...
>>> A() + 1
Ко мне "прибавили" 1
>>>