Страницы

Поиск по вопросам

вторник, 23 октября 2018 г.

Переменные с _ в python

Смотрю примеры кода на различных сайтах и часто вижу переменные (или я не понимаю, что это) с вот таким символом "_". Например: _f или с двумя __. Гуглить не знаю по какому ключевому слову. Пример кода:
def run_once(f): """ >>> @run_once ... def foo(n): return n + 1
>>> foo(7) 8
>>> foo(0) 8 """ def _f(*args, **kwargs): if not hasattr(_f, "_retval"): _f._retval = f(*args, **kwargs) return _f._retval return _f
if __name__ == "__main__": import doctest doctest.testmod()


Ответ

Имя с одним подчёркиванием _name - по общему соглашению используется как аналог protected, защищённого имени в других языках. В других языках такое имя могут использовать только наследники класса. В питоне же это просто соглашение. Имя с двумя подчёркиваниями __name является аналогом private (в питоне псевдоприватное), имя только для внутреннего использования внутри модуля или класса. У таких имён есть специальная защита, и обратиться к нему снаружи можно только зная класс, в котором этот атрибут определен. Имена с двумя подчёркиваниями с двух сторон имени __name__ являются "магическими" методами, реализующими некоторую функциональность языка.

Комментариев нет:

Отправить комментарий