🐍💪 ТОП-5 вопросов повышенной сложности на собеседовании по Python

Метаклассы, дескрипторы, модификаторы доступа – звучит сложно? Разберем 5 вопросов, которые часто задают на собеседованиях по Python.

В начале этой статьи я бы хотел немного познакомиться с вами. Меня зовут Кирилл и достаточно долгое время я провел в должности тех. лида и, исходя из этого, мне нужно было часто проводить собеседования. Сам я Full-Stack и из-за частых собесов у меня сформировался определенный топ интересных вопросов, который я задаю на собеседовании.

1. Что такое метаклассы?

Метакласс – это класс, который определяет свойства других классов. С помощью метакласса мы можем определять свойства, которые следует добавлять в новые классы, определенные в нашем коде. То есть исходя из этого – метаклассы мы можем использовать в качестве конструктора для наших классов.

Что такое метаклассы?
🐍🎓 Библиотека собеса по Python
Подтянуть свои знания по Python вы можете на нашем телеграм-канале «Библиотека собеса по Python»

2. Что такое дескрипторы и как их использовать?

Если говорить в общем, то дескриптор — это атрибут объекта со связанным поведением (англ. binding behavior), т. е. такой, чьё поведение при доступе переопределяется методами протокола дескриптора. Эти методы: get, set и delete. Если хотя бы один из этих методов определён для объекта, то он становится дескриптором. Стандартное поведение при доступе к атрибутам — это получение, установка и удаление атрибута из словаря объекта.

Что такое дескрипторы и как их использовать?

3. Что такое модификаторы доступа и как с ними работать?

Все поля, методы и остальные компоненты класса имеют модификаторы доступа. Модификаторы доступа позволяют задать допустимую область видимости для компонентов класса. То есть модификаторы доступа определяют контекст, в котором можно употреблять данную переменную или метод.

private: закрытый или приватный компонент класса или структуры. Приватный компонент доступен только в рамках своего класса или структуры. В Python объявляется с помощью двух нижних подчеркиваний __.

protected: такой компонент класса доступен из любого места в своем классе или в производных классах. При этом производные классы могут располагаться в других сборках. В Python объявляется с помощью одного нижнего подчеркивания _.

public: публичный, общедоступный компонент класса или структуры. Такой компонент доступен из любого места в коде, а также из других программ и сборок. В Python объявляется без нижних подчеркиваний.

Важно понимать, что подчеркивания несут скорее документальный характер, так как в Python модификаторов доступа нет и это лишь помощь в том, чтобы по коду было понятно с чем мы работаем

Что такое модификаторы доступа и как с ними работать?

4. Почему числа не равны?

Это связано с тем что Python хранит данные данные от -5 до 256 в одной ячейке памяти, то есть две переменные будут указателями на одну ячейку в области памяти. Если цифра превышает этот лимит, то для нее создается отдельная ячейка в памяти.

Оператор is проверяет указывают ли переменные на одинаковую область в памяти

Почему числа не равны?

5. Что такое каррирование?

Каррирование — продвинутая техника для работы с функциями. Она используется не только в Python, но и в других языках.

Каррирование — это трансформация функций таким образом, чтобы они принимали аргументы не как f(a, b, c), а как f(a)(b)(c).

Каррирование не вызывает функцию, оно только трансформирует её. Каррированием также называют уменьшение арности функции.

Что такое каррирование?
***

Мой канал в ТГ – https://t.me/ptworl. Мой канал в Ютубе – youtube.com/@ptworl

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ

admin
11 декабря 2018

ООП на Python: концепции, принципы и примеры реализации

Программирование на Python допускает различные методологии, но в его основе...
admin
28 июня 2018

3 самых важных сферы применения Python: возможности языка

Существует множество областей применения Python, но в некоторых он особенно...
admin
13 февраля 2017

Программирование на Python: от новичка до профессионала

Пошаговая инструкция для всех, кто хочет изучить программирование на Python...