Python: задачки и вопросы
7.12K subscribers
1.35K photos
1 video
1 file
123 links
Вопросы и задачки для подготовки к собеседованиям и прокачки навыков

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

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

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

Другие наши проекты: https://tprg.ru/media
Download Telegram
Подробное объяснение

1️⃣ Python 3 компилирует super() без аргументов в super(__class__, <first_arg>).
2️⃣ Компилятор создаёт __classcell__ — ячейку замыкания с классом B.
3️⃣ Внутри inner() Python ищет __class__ в замыканиях — находит B.
4️⃣ self берётся из параметра f(self) через цепочку замыканий.
5️⃣ super().f() → A.f(self) → возвращает "A".

Почему это важно

В Python 2 super(B, self) было обязательно. В Python 3 zero-argument super() работает через магию компилятора — даже во вложенных функциях.
2
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Развёрнутое пояснение:
Выражение a + [3] порождает новый список, который затем присваивается переменной a, не затрагивая исходный объект, на который ссылается b. Если бы использовалось a += [3], вызвался бы метод __iadd__, изменяющий список на месте, и тогда b тоже бы изменился. Таким образом, оператор присваивания с + не модифицирует исходный список.
3
Please open Telegram to view this post
VIEW IN TELEGRAM
4
Please open Telegram to view this post
VIEW IN TELEGRAM
2