Python: задачки и вопросы
7.66K subscribers
1.21K photos
2 videos
1 file
101 links
Вопросы и задачки для подготовки к собеседованиям и прокачки навыков

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels

Другие наши проекты: https://tprg.ru/media
Download Telegram
🧩 Что выведет код?
Anonymous Quiz
49%
1
37%
2
11%
3
3%
Error
👍2👎1
Код демонстрирует работу оператора 𝚍𝚎𝚕 с методом __𝚍𝚎𝚕𝚊𝚝𝚝𝚛__, который автоматически вызывается при удалении атрибутов объекта.

Из документации Python:

«Оператор 𝚍𝚎𝚕 используется для удаления элементов из списков, переменных и атрибутов объектов».

В данном случае:

🔘 При выполнении 𝚍𝚎𝚕 𝚋𝚘𝚋.𝚗𝚊𝚖𝚎 интерпретатор автоматически вызывает метод __𝚍𝚎𝚕𝚊𝚝𝚝𝚛__.
🔘 В параметр 𝚊𝚝𝚝𝚛 передаётся имя атрибута 𝚗𝚊𝚖𝚎.
🔘 Метод выводит '𝚍𝚎𝚕: ' + 𝚊𝚝𝚝𝚛, то есть 𝚍𝚎𝚕: 𝚗𝚊𝚖𝚎.
🔘 Затем проверяется условие 𝚒𝚏 𝚊𝚝𝚝𝚛 == '𝚗𝚊𝚖𝚎' — оно истинно.
🔘 Переменная 𝚊𝚝𝚝𝚛 переназначается на '_𝚗𝚊𝚖𝚎' для работы с внутренним атрибутом.
🔘 Выполняется 𝚍𝚎𝚕 𝚜𝚎𝚕𝚏.__𝚍𝚒𝚌𝚝__[𝚊𝚝𝚝𝚛], что удаляет атрибут _𝚗𝚊𝚖𝚎 из словаря объекта.

Важно понимать, что метод __𝚍𝚎𝚕𝚊𝚝𝚝𝚛__ получает именно то имя атрибута, которое было указано в операторе 𝚍𝚎𝚕, а не внутреннее имя _𝚗𝚊𝚖𝚎. Это позволяет создавать "виртуальные" атрибуты, которые на самом деле управляют другими внутренними атрибутами объекта.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1👎1
Свойства исполняют особую роль, в то время как дескрипторы более универсальны. Свойства определяют функции извлечения, установки и удаления для конкретного атрибута; дескрипторы снабжают класс методами для таких действий, но предоставляют добавочную гибкость с целью поддержки более произвольных действий. На самом деле свойства являются простым способом создания специфического вида дескриптора — такого, который запускает функции при доступе к атрибутам. Реализация тоже отличается: свойство создается с помощью встроенной функции, а дескриптор — посредством класса; таким образом, дескрипторы могут воспользоваться в своих интересах всеми обычными возможностями ООП, касающимися классов, вроде наследования. Кроме того, вдобавок к информации состояния экземпляра дескрипторы имеют собственное локальное состояние, так что временами они способны избегать конфликтов имен в экземпляре.
👍1👎1
🧩 Что выведет код?
Anonymous Quiz
17%
6, 7
67%
spam
6%
None
10%
Error