Это «подчеркивание», кажется, происходит много, и мне было интересно, было ли это требованием в языке Python или просто условием?
Кроме того, кто-то может назвать и объяснить, какие функции имеют тенденцию подчеркивания и почему ( __init__
например)?
python
function
methods
double-underscore
Чак Теста
источник
источник
Ответы:
Из Python PEP 8 - Руководство по стилю для кода Python :
Обратите внимание, что имена с двойным начальным и конечным подчеркиванием по существу зарезервированы для самого Python: «Никогда не изобретайте такие имена; используйте их только как документированные».
источник
__double_leading_underscore
это еще общественности , переменная просто переименованы , чтобы избежать столкновения.Другие респонденты правы в описании двойных начальных и конечных подчеркиваний как соглашения об именах для «специальных» или «магических» методов.
Хотя вы можете вызывать эти методы напрямую (
[10, 20].__len__()
например), наличие подчеркивания является намеком на то, что эти методы предназначены для косвенного вызова (len([10, 20])
например). Большинство операторов python имеют связанный «магический» метод (например,a[x]
это обычный способ вызоваa.__getitem__(x)
).источник
Имена, окруженные двойным подчеркиванием, являются «особенными» для Python. Они перечислены в Справочнике по языку Python, раздел 3, «Модель данных» .
источник
На самом деле я использую имена методов _, когда мне нужно различать имена родительских и дочерних классов. Я прочитал некоторые коды, которые использовали этот способ создания родительско-дочерних классов. В качестве примера я могу предоставить этот код:
...
и ребенок, у которого есть метод _worker
...
источник
Это соглашение используется для специальных переменных или методов (так называемый «магический метод»), таких как
__init__
и__len__
. Эти методы предоставляют специальные синтаксические функции или делают специальные вещи.Например,
__file__
указывает местоположение файла Python,__eq__
выполняется при выполненииa == b
выражения.Пользователь, конечно, может создать специальный специальный метод, что является очень редким случаем, но часто может изменить некоторые из встроенных специальных методов (например, вы должны инициализировать класс тем,
__init__
который будет выполняться вначале, когда экземпляр класса). создано).источник
Добавлен пример, чтобы понять использование __ в python. Вот список всех __
https://docs.python.org/3/genindex-all.html#_
Ограничение доступа с помощью __
источник