Что означает двойное подчеркивание
Подчеркивание текста двойной линией в Word
Способ 1: Кнопка на панели инструментов
Одним из вариантов начертания текста в документе Microsoft Word является его подчеркивание, которое по умолчанию имеет вид одинарной линии. Заменить ее на двойную не составит труда.
Это сразу же отобразится на тексте.
Опции, которые доступны в открывшемся окне «Шрифт», подробнее рассмотрим в следующей части статьи.
Способ 2: Параметры группы «Шрифт»
Если стандартная двойная черта вас по каким-то причинам не устраивает или вы хотите более детально настроить ее отображение, предварительно выделив нужный фрагмент текста, вызовите диалоговое окно «Шрифт» — для этого нажмите на небольшую стрелку, расположенную в правом нижнем углу одноименной группы инструментов. Это же можно сделать и путем последовательного нажатия Ч – «Другие варианты подчеркивания», о чем было сказано в конце предыдущей части статьи.
Доступен выбор цвета текста
и непосредственно самой линии,
а также варианты ее отображения только под текстом или и на пробелах (установлено по умолчанию и распространяется на все линии).
Определившись с выбором, нажмите на кнопку «ОК» — это действие закроет окно «Шрифт» и применит выбранный тип подчеркивания к тексту.
Более быстрый вариант подчеркивания текста заключается в использовании сочетания клавиш «Ctrl+U», но проблема в том, что таким образом можно применить только одинарную черту, независимо от того, какой вариант уже был выбран ранее и установлен по умолчанию.
Создание стиля подчеркивания по умолчанию
Какой бы из вариантов подчеркивания текста вы не выбрали в меню кнопки Ч или диалоговом окне «Шрифт», он будет распространяться на весь текстовый документ, с которым вы работаете в настоящий момент. То есть, если вы выбрали двойную черту, именно она и будет применяться к любому выделенному тексту после нажатия соответствующей кнопки на панели инструментов. Если требуется сделать так, чтобы данный стиль начертания стал стандартным и для других текстовых файлов, создаваемых в Ворд, выполните следующее:
Теперь установленный вами стиль подчеркивания текста будет распространятся на все новые файлы, создаваемые в Word.
Удаление подчеркивания
Если вы по ошибке подчеркнули не то слово или слова, либо же если требуется избавиться от такого варианта написания, выделите фрагмент текста и нажмите на кнопку Ч. Если выбранный фрагмент был подчеркнут двумя чертами или любыми другими линиями, отличными от стандартной одинарной, можно воспользоваться сочетанием клавиш «Ctrl+U» — их потребуется нажать дважды, так как первый раз добавит стандартное начертание, а второй его уберет.
Помимо этой статьи, на сайте еще 12529 инструкций.
Добавьте сайт Lumpics.ru в закладки (CTRL+D) и мы точно еще пригодимся вам.
Отблагодарите автора, поделитесь статьей в социальных сетях.
В чем смысл одиночного и двойного подчеркивания перед именем объекта?
Может ли кто-то объяснить, что именно имеет значение подчеркивания перед именем объекта в Python? Также объясните разницу между одиночным и двойным лидирующим подчеркиванием. Кроме того, имеет ли смысл то же самое, является ли рассматриваемый объект переменной, функцией, методом и т.д.?
ОТВЕТЫ
Ответ 1
Одиночный подшерсток
Имена в классе с лидирующим подчеркиванием просто указывают другим программистам, что атрибут или метод предназначены для того, чтобы быть закрытыми. Тем не менее, ничего особенного не делается с самим именем.
_single_leading_underscore: слабый индикатор «внутреннего использования». Например, from M import * не импортируется объект, имя которого начинается с символа подчеркивания.
Double Underscore (Name Mangling)
И предупреждение с той же страницы:
Назначение имени предназначено для того, чтобы дать классам простой способ определить «частные» переменные экземпляра и методы, не беспокоясь о переменных экземпляра, определяемых производными классами, или обманывать переменные экземпляра кодом вне класса. Обратите внимание, что правила манипуляции предназначены главным образом для предотвращения несчастных случаев; все еще возможно, чтобы решительная душа могла получить доступ или изменить переменную, которая считается частной.
пример
Ответ 2
Ответ 3
__foo__ : это просто соглашение, способ использования системы Python для имен, которые не будут конфликтовать с именами пользователей.
_foo : это просто соглашение, способ для программиста указать, что переменная является частной (что бы это ни говорило в Python).
__foo : это имеет реальное значение: интерпретатор заменяет это имя _classname__foo как способ гарантировать, что имя не будет перекрываться с похожим именем в другом классе.
Никакой другой символ подчеркивания не имеет смысла в мире Python.
В этих соглашениях нет разницы между классом, переменной, глобальным и т.д.
Ответ 4
._variable является полуприватым и подразумевается только для соглашения
.__variable__ обычно зарезервирован для встроенных методов или переменных
t._b доступен, поскольку он скрыт только по соглашению
t.__ a не найден, потому что он больше не существует из-за namemangling
Получив доступ к instance._className__variable вместо имени двойного подчеркивания, вы можете получить доступ к скрытому значению
Ответ 5
Единственное подчеркивание в начале:
У Python нет реальных частных методов. Вместо этого одно подчеркивание в начале имени метода или атрибута означает, что вы не должны обращаться к этому методу, потому что он не является частью API.
(Этот фрагмент кода был взят из исходного кода django: django/forms/forms.py). В этом коде errors являются общедоступным, но метод, который этот метод вызывает, _get_errors, является «частным», поэтому вы не должны обращаться к нему.
Два подчеркивания в начале:
Это вызывает много путаницы. Его нельзя использовать для создания частного метода. Его следует использовать, чтобы избежать переопределения вашего метода подклассом или доступа к нему случайно. Рассмотрим пример:
Теперь создайте подкласс B и выполните настройку метода __test
Как мы видели, A.test() не вызывал методы B.__ test(), как и следовало ожидать. Но на самом деле это правильное поведение для __. Два метода, называемые __test(), автоматически переименовываются (искажаются) в _A__test() и _B__test(), поэтому они не случайно переопределяют. Когда вы создаете метод, начинающийся с __, это означает, что вы не хотите, чтобы кто-либо мог его переопределить, и вы только намереваетесь получить доступ к нему из собственного класса.
Два подчеркивания в начале и в конце:
Всегда есть оператор или нативная функция, которая называет эти магические методы. Иногда это просто вызов пин-крюка в определенных ситуациях. Например, __init__() вызывается, когда объект создается после __new__() для создания экземпляра.
Для получения дополнительной информации см. Руководство PEP-8. Дополнительные методы магии см. В этом PDF файле.
Ответ 6
Иногда у вас есть то, что кажется кортежем с ведущим подчеркиванием, как в
В этом случае происходит то, что _() является псевдонимом для функции локализации, которая работает с текстом, чтобы поместить его на правильный язык и т.д. на основе языкового стандарта. Например, Sphinx делает это, и вы найдете среди импорта
а в sphinx.locale _() назначается как псевдоним некоторой функции локализации.
Ответ 7
Подчеркивание (_) в Python
Ниже приведены разные места, где _ используется в Python:
Single Underscore:
Double Underscore:
до после
В переводчике:
_ возвращает значение последнего выполненного значения выражения в Python REPL
Для игнорирования значений:
Несколько раз мы не хотим, чтобы возвращаемые значения в это время присваивали эти значения wnderscore. Он используется как переменная.
После названия
У Python есть свои ключевые слова по умолчанию, которые мы не можем использовать в качестве имени переменной. Чтобы избежать такого конфликта между ключевыми словами и переменной python, мы используем символ подчеркивания после имени
Пример:
Перед именем
Leading Underscore перед именем variable/function/method указывает программисту, что он предназначен только для внутреннего использования, который может быть изменен всякий раз, когда требуется класс.
Здесь префикс имени by underscore рассматривается как непубличный. Если указать из Import *, все имя начинается с _, не будет импортироваться.
Python не указывает действительно частный, так что это могут быть вызовы непосредственно из других модулей, если они указаны во всех, мы также называем это слабым Private
Вызов файла из REPL
__leading_double_underscore
Ведущий двойной символ подчеркивает интерпретатор python для перезаписи имени, чтобы избежать конфликта в подклассе. Interpreter изменяет имя переменной с расширением класса и эту функцию, известную как Mangling. testFile.py
В интерпретаторе Python Mangling измените имя переменной на ___. Таким образом, множественное время используется как частный член, потому что другой класс не может напрямую обращаться к этой переменной. Основной целью __ является использование переменной/метода только в классе. Если вы хотите использовать его вне класса, вы можете сделать публичный api
__ДО ПОСЛЕ__
Имя с началом с __ и заканчивается тем же, что и специальные методы в Python. Python предоставляет эти методы для использования в качестве перегрузки оператора в зависимости от пользователя.
Python предоставляет это соглашение для различения определяемой пользователем функции с помощью функции модулей
Ответ 8
Если вы действительно хотите сделать переменную только для чтения, IMHO лучшим способом было бы использовать свойство() с переданным ему только getter. С свойством() мы можем иметь полный контроль над данными.
Я понимаю, что OP задал немного другой вопрос, но так как я нашел еще один вопрос, задающий вопрос о том, как отмечать отмеченные дубликаты для отдельных переменных, я подумал о добавлении этой дополнительной информации здесь.
Ответ 9
Двойным лидирующим подчеркиванием без трейлинг-аналогов тоже является соглашение, однако методы класса будут искажены интерпретатором. Для переменных или базовых имен функций разница не существует.
Ответ 10
Ваш вопрос хорош, речь идет не только о методах. Функции и объекты в модулях обычно имеют префикс с одним символом подчеркивания и могут быть префиксными двумя.
Но имена __double_underscore, например, не обрабатываются именами в модулях. Случается, что имена, начинающиеся с одного (или большего) подчеркивания, не импортируются, если вы импортируете все из модуля (из импорта модуля *), а также имена, указанные в справке (модуле).
Ответ 11
Вот простой иллюстративный пример того, как свойства двойного подчеркивания могут влиять на унаследованный класс. Итак, со следующей настройкой:
если затем создать дочерний экземпляр в REPL python, вы увидите ниже
Это может быть очевидным для некоторых, но это застало меня в безопасности в гораздо более сложной среде
Ответ 12
«Private» переменные экземпляра, к которым невозможно получить доступ, кроме как изнутри объекта, не существует в Python. Тем не менее, существует соглашение, за которым следует большинство кода Python: имя с префиксом подчеркивания (например, _spam) должно рассматриваться как непубличная часть API (будь то функция, метод или элемент данных), Его следует рассматривать как деталь реализации и могут быть изменены без предварительного уведомления.
Ответ 13
Получение фактов _ и __ довольно легко; другие ответы выражают их довольно хорошо. Использование намного сложнее определить.
Вот как я это вижу:
Следует использовать, чтобы указать, что функция не предназначена для публичного использования, например API. Это и ограничение на импорт делают его похожим на internal на С#.
Следует использовать, чтобы избежать столкновения имен в hirarchy inheritace и избегать позднего связывания. Очень похоже на С#.
Это тоже цитата, которая мне очень нравится:
Проблема заключается в том, что автор класса может законно думать «это имя атрибута/метода должно быть закрытым, доступным только изнутри это определение класса» и использовать соглашение __private, но позже, пользователь этого класса может сделать подкласс, который законно необходим доступ к этому имени. Так что либо надкласс должен быть изменен (что может быть сложно или невозможно), или код подкласса должен используйте ручные искаженные имена (что в лучшем случае уродливо и хрупко).
Но проблема с этим на мой взгляд заключается в том, что если нет IDE, которая предупреждает вас, когда вы переопределяете методы, поиск ошибки может занять некоторое время, если вы случайно завершили метод из базового класса.
Ответ 14
Так как многие люди имеют в виду Раймонда говорить, я просто сделать это немного легче, написав, что он сказал:
Намерение двойного подчеркивания не было о частной жизни. Намерение было использовать именно так, как это
Это на самом деле противоположность частной жизни, все это о свободе. Это делает ваши подклассы свободными для переопределения любого одного метода, не нарушая другие.
Двойное подчеркивание имеет искажение имени, поэтому существует очень небольшая вероятность того, что локальная ссылка в родительском классе получит переопределение в производном классе. таким образом » делает ваши подклассы свободными для переопределения любого одного метода, не нарушая другие «.
Ответ 15
Отличные ответы и все они правильные. Я привел простой пример вместе с простым определением/значением.
Просто чтобы быть честным здесь Согласно документации Python
«Закрытые» переменные экземпляра, к которым нельзя получить доступ, кроме как внутри объекта, которого нет в Python «
Как в ворде сделать двойную линию: 6 проверенных способов
В официальных документах без выделения важных частей текста порой не обойтись, а потому пора разобраться, как в «Ворде» сделать двойную линию с помощью таблицы, через раздел с «Границами» или даже подготовив элементы оформления вручную.
С помощью инструмента «Подчеркивание текста»
Двойная линия в Word быстрее всего добавляется через меню «Подчеркивание текста», вызываемое с верхней панели быстрого доступа, расположенной на вкладке «Главная». Перед добавлением оформления предстоит выделить текст на странице, а после вызвать вертикальный список с доступными стилями и выбрать вариант «Двойное подчеркивание».
Применяются выбранные параметры сразу – результат появится на странице. Форматирование применяется лишь к выбранному фрагменту (или слову), а не ко всему документу сразу.
Используем расширенные параметры группы «Шрифт»
Кроме раздела «Подчеркивание текста» оформление выделенного фрагмента текста настраивается и через расширенные параметры «Шрифта»: достаточно воспользоваться комбинацией клавиш Ctrl + D и в появившемся меню воспользоваться центральной панелью с настройками.
Word предложит сменить цвет текста, задать вариант форматирования, а вместе с тем поменять оттенок добавляемого подчеркивания.
Если перечисленных элементов недостаточно для внесения графических перемен в оформление документа, то снизу дополнительно доступна кнопка «Текстовые эффекты».
Создание стиля подчеркивания для постоянной работы (по умолчанию) в Word
Выбираемые настройки подчеркивания распространяются лишь на конкретный документ офисного редактора: следующий раз добавлять настройки предстоит снова. Проблема решается подготовкой стиля оформления по умолчанию через дополнительные параметры шрифтов (связка клавиш Ctrl + D).
После перехода предстоит вновь выбрать цвет текста и подчеркивания, выбрать стиль линий (двойную), а после – нажать на кнопку «По умолчанию» в нижней части интерфейса слева.
Выбранные настройки закрепляются в Word для шаблона dat, который открывается вместе с новыми документами.
При возникновении проблем разработчики рекомендуют сбросить оформление (в том числе и шрифтов), а после – вновь обратиться к меню и задать «чистые» настройки по умолчанию. В последнем случае риск столкнуться со странным поведением параметров форматирования приближается к нулю.
Использование горячих клавиш
Комбинация клавиш Ctrl + U в Word подчеркивает выделенный текст исключительно в стандартном режиме (вне зависимости от того, какой стиль подчеркивания выбран по умолчанию). А потому каждый раз предстоит обращаться к разделу «Подчеркнутый» и выбирать подходящий стиль оформления.
Кроме связки Ctrl + U срабатывает и трюк с разметкой линий границ в автоматическом режиме: Word сходу преобразует три стоящих рядом знака равно в сплошное подчеркивание, если после ввода нажать на Enter.
Настроить оформление появившейся линии текстовый редактор не разрешает: доступно лишь перемещение по странице с помощью левой кнопки мыши.
Двойная линия с помощью таблицы
Добавлять таблицу с полями с нуля совсем необязательно: текстовый редактор Word давно содержит категорию инструментов «Граница», доступную на панели быстрого доступа на вкладке «Главная» (рядом со стилями текста). Если навести курсор на иконку и в появившемся списке выбрать «Нижняя граница», то добавленный текст сразу получит специальное подчеркивание.
По умолчанию вырисовывается лишь одинарная линия, но, если после выбора «Нижней границы» снова вызвать меню, а после нажать на «Границы и заливка», то появится шанс внести коррективы в оформление: выбрать тип и вариант заливки, цвет и способ добавления – к абзацу, слову или странице.
Вариант с таблицей тоже сработает, но понадобится дополнительно разобраться в деталях:
Если нужна обычная двойная линия
Альтернативный способ добавить подчеркивание – воспользоваться вкладкой «Вставка», включающей раздел «Иллюстрации». После перехода предстоит вызвать меню «Фигуры», а затем выбрать «Линии».
Добавляются интерактивные элементы и под введенным текстом, и в свободном месте на странице: достаточно зажать левую кнопку мыши и провести курсор влево или вправо – в подходящем направлении для выделения абзаца или слова.
Если зажать Shift, то линия вытянется строго горизонтально. Дополнительно при рисовании появятся направляющие, подсказывающие, где находятся поля на странице.
После рисования линию предстоит отформатировать: оформление меняется в разделе «Формат фигуры».
Последний штрих – задать «Ширину», выбрать подходящий «Составной тип», сменить цвет заливки.
Как удалить двойное подчеркивание
Настройки форматирования сбрасываются и с помощью комбинации горячих клавиш Ctrl + U (предварительно предстоит выбрать фрагмент текста для внесения корректировок) и через глобальную очистку параметров (специальная кнопка, расположенная в интерфейсе под или рядом с габаритами шрифтов на вкладке «Главная»).
Последний вариант предусматривает очистку и сторонних параметров, включая полужирное начертание и положение на странице, а заодно сбрасывает списки и прочие элементы дизайна, снижающие уровень читабельности.
Что означает одно-и двойное подчеркивание перед именем объекта?
Я хочу прояснить это раз и навсегда. Может ли кто-нибудь объяснить точное значение наличия ведущих подчеркиваний перед именем объекта в Python? Также объясните разницу между одиночным и двойным ведущим подчеркиванием. Кроме того, остается ли это значение неизменным, является ли рассматриваемый объект переменной, функцией, методом и т. д.?
13 ответов
Одного Символа Подчеркивания
имена в классе с ведущим подчеркиванием просто указывают другим программистам, что атрибут или метод предназначен для частного использования. Однако с самим именем ничего особенного не делается.
_single_leading_underscore: слабый индикатор» внутреннего использования». Е. Г. from M import * не импортирует объекты, имя которых начинается с подчеркивания.
двойная Подчеркивание (Имя Искажение)
и предупреждение с той же страницы:
name mangling предназначен для того, чтобы дать классам простой способ определить «частные» переменные и методы экземпляра, не беспокоясь о переменных экземпляра, определенных производными классами, или mucking с переменными экземпляра кодом вне класса. Обратите внимание, что правила mangling разработанный в основном, чтобы избежать несчастных случаев; все еще возможно для решительной души получить доступ или изменить переменную, которая считается частной.
пример
__foo__ : Это просто соглашение, способ для системы Python использовать имена, которые не будут конфликтовать с именами пользователей.
_foo : это просто соглашение, способ для программиста указать, что переменная является частной (что бы это ни значило в Python).
__foo : это имеет реальное значение: интерпретатор заменяет это имя на _classname__foo как способ гарантировать, что имя не будет перекрываться с аналогичным именем в другом классе.
никакой другой формы подчеркивает смысл в Python в мире.
в этих соглашениях нет разницы между class, variable, global и т. д.
.__variable часто неправильно считается superprivate, в то время как это фактическое значение просто namemangle к предотвратить случайный доступ[1]
.__variable__ обычно зарезервировано для встроенных методов или переменных
Т._b доступен, потому что он будет скрыт только по
т.__a не найден, потому что он больше не существует из-за namemangling
по ссылке instance._className__variable вместо имени с двойным подчеркиванием вы можете получить доступ к скрытому значению
одиночное подчеркивание в начале:
Python не имеет реальных частных методов. Вместо этого одно подчеркивание в начале имени метода или атрибута означает, что вы не должны обращаться к этому методу, потому что он не является частью API.
(этот фрагмент кода был взят из исходного кода django: django/forms/forms.py). В этом коде errors является общедоступным свойством, но метод, вызываемый этим свойством, _get_errors, является «частным», поэтому вы не должны доступ к нему.
два подчеркивания в начале:
это вызывает много путаницы. Он не должен использоваться для создания частного метода. Он должен использоваться, чтобы избежать переопределения вашего метода подклассом или случайного доступа. Давайте рассмотрим пример:
Теперь создайте подкласс B и сделайте настройку для _ _ test method
как мы видели, A. test () не вызывал методы B.__test (), как мы могли бы ожидать. Но на самом деле это правильное поведение для __. Два метода, называемые __test (), автоматически переименовываются (искажаются) в _A__test () и _B__test (), поэтому они случайно не переопределяются. Когда вы создаете метод, начинающийся с__, это означает, что вы не хотите, чтобы кто-либо мог переопределить его, и вы только собираетесь получить доступ к нему изнутри его собственного класс.
два подчеркивания в начале и в конце:
всегда есть оператор или собственная функция, которая вызывает эти магические методы. Иногда это просто крючок, который python вызывает в определенных ситуациях. Например __init__() вызывается, когда объект создается после __new__() называется создайте экземпляр.
дополнительные сведения см. В разделе руководство PEP-8. Дополнительные магические методы см. В разделе этот PDF.
иногда у вас есть то, что кажется кортежем с ведущим подчеркиванием, как в
в этом случае происходит то, что _ () является псевдонимом для функции локализации, которая работает с текстом, чтобы поместить его на правильный язык и т. д. на основе локали. Например, Сфинкс делает это, и вы найдете среди импорта
и в сфинкс.locale, _ () присваивается как псевдоним некоторой функции локализации.
подчеркивание ( _ ) в Python
ниже приведены различные места, где _ используется в Python:
Один Подчеркнуть:
двойная Подчеркивание:
before_after
Одного Символа Подчеркивания
Переводчик:
_ возвращает значение последнего выполненного значения выражения в Python REPL
для игнорирования значений:
несколько раз мы не хотите, чтобы возвращаемые значения в то время назначили эти значения wnderscore. Он использовался как одноразовая переменная.
название
Python имеет свои ключевые слова по умолчанию, которые мы не можем использовать в качестве имени переменной. Чтобы избежать такого конфликта между ключевым словом python и переменной, мы используем подчеркивание после имени
пример:
перед названием
подчеркивания перед переменная / функция / имя метода указывает программисту, что он предназначен только для внутреннего использования, который может быть изменен, когда класс хочет.
Python не указывает действительно частные, поэтому эти могут быть вызваны непосредственно из других модулей, если он указан в все, мы также называем его слабым частная
вызов файл из REPL
__ведущий_двойной_подчеркивания
ведущее двойное подчеркивание говорит интерпретатору python переписать имя, чтобы избежать конфликта в подклассе.Интерпретатор изменяет имя переменной с расширением класса и этой функцией, известной как искажение. testFile.py
__ДО_ПОСЛЕ__
имя с началом С __ и заканчивается тем же, что и специальные методы в Python. Python предоставляет эти методы для использования в качестве перегрузки оператора в зависимости от пользователь.
Python предоставляет это Соглашение для различения пользовательской функции с функцией модуля
Если кто-то действительно хочет сделать переменную только для чтения, IMHO лучшим способом было бы использовать property() только с геттером, переданным ему. С имущества() мы можем иметь полный контроль над данными.
Я понимаю, что OP задал немного другой вопрос, но поскольку я нашел другой вопрос, задающий «как установить частные переменные», отмеченный дубликатом с этим, я подумал о добавлении этой дополнительной информации здесь.
одиночные ведущие подчеркивания-это соглашение. с точки зрения интерпретатора нет никакой разницы, начинаются ли имена с одного подчеркивания или нет.
двойные ведущие подчеркивания без конечных аналогов также являются соглашением, однако методы класса будут исковеркали интерпретатором. Для переменных или основной функции имен не существует.
ваш вопрос хорош, речь идет не только о методах. Функции и объекты в модулях обычно имеют префикс с одним подчеркиванием и могут иметь префикс два.
но_ _ double _ underscore имена не искажаются в модулях, например. Что происходит, так это то, что имена, начинающиеся с одного (или нескольких) подчеркиваний, не импортируются, если вы импортируете все из модуля (из импорта модуля *), а также имена, показанные в справке(модуле).
вот простой иллюстративный пример того, как свойства двойного подчеркивания могут влиять на унаследованный класс. Итак, со следующей настройкой:
Если вы затем создадите дочерний экземпляр в Python REPL, вы увидите ниже
это может быть очевидно для некоторых, но это застало меня врасплох в гораздо более сложной среде
«частные» переменные экземпляра, к которым нельзя получить доступ, кроме как изнутри объекта, не существуют в Python. Однако существует соглашение, за которым следует большинство кода Python: имя с префиксом подчеркивания (например, _spam) должно рассматриваться как непубличная часть API (будь то функция, метод или элемент данных). Он должен рассматриваться как деталь реализации и может быть изменен без уведомление.
получить факты _ и _ _ довольно легко; другие ответы выражают их довольно хорошо. Использование гораздо труднее определить.
вот как я это вижу:
следует использовать, чтобы указать, что функция не предназначена для публичного использования, например API. Это и ограничение импорта делают его поведение очень похожим на internal в C#.
следует использовать, чтобы избежать столкновения имен в наследовании hirarchy и избежать latebinding. Очень похожий частная в C#.
это тоже цитата, которая мне очень нравится:
проблема в том, что автор класса вправе думать «это имя атрибута / метода должно быть закрытым, доступным только из в течение это определение класса» и использовать соглашение _ _ private. Но позже, пользователь этого класса может сделать подкласс, который законно должен доступ к этому имени. Поэтому либо суперкласс должен быть изменен (что может быть сложно или невозможно), или код подкласса должен используйте вручную искаженные имена (которые в лучшем случае уродливы и хрупки).
но проблема в том, что, на мой взгляд, если нет IDE, которая предупреждает вас, когда вы переопределяете методы, находя ошибка может занять некоторое время, если вы случайно переопределили метод из базового класса.