Миссия декораторов достаточно проста. Они позволяют написать некую обёртку для функции, изменить или дополнить её функционал, не трогая код самой функции.
В примере мы превратили функцию куба числа в функцию с выводом результата в консоль.
Декораторы, как вопрос, встречаются чуть ли не на каждом собеседовании. Это крайне важный аспект языка.
Если имя начинается с одного подчеркивания, то такая переменная, метод или класс в модуле считается приватной ( ее использование предполагается только внутри класса или модуля).
Если вы обратитесь к приватной переменной из-вне модуля или класса, где она определена, то, вероятно, ваша IDE просто подчеркнет такой код, как подозрительный, но он будет выполняться без ошибок или предупреждения.
Замечание from module import * не будет импортировать приватные члены модуля. Но импортировать их можно принудительно: from module import _Base, _my_version
Кроме стандартных обращений к атрибутам объекта через точку, в питоне для этого есть несколько специальных функций. Сегодня рассмотрим getattr и setattr . По их названию, думаю, не сложно догадаться, за что они отвечают - получение и "установка" атрибута.
Первыми двумя аргументами в обеих функциях идут непосредственно объект и название атрибута в виде строки, а в setattr потребуется передать еще и новое значение для атрибута.