👨🏻💻 В нашем дружественном IT-канале 🔵 Эпсилон была опубликована интересная задачка по программированию. В этом посте разберем её подробно.
👩💻 Задача для наших подписчиков на понимание наследования в Python: Задача: Что выведет следующий код?
📜 Варианты ответов:
⚡️ — 1. А
❤️ — 2. B
👍🏻 — 3. Будет вызвано исключение TypeError
👾 — 4. С
Правильный ответ: 3. Будет вызвано исключение TypeError. Но почему так сработает?
Пояснение: Код не сможет быть даже исполнен из-за ошибки в определении класса C. При создании класса C Python пытается построить порядок разрешения методов (MRO). Класс C наследуется от A и B, при этом класс B сам является наследником A.
Это создаёт противоречивую иерархию, которую невозможно выстроить линейно и логично. С точки зрения MRO, класс A не может находиться в иерархии как до класса B (так как B наследуется от A), так и после него (так как C наследует от A после B). Это противоречие приводит к ошибке. Если вы запустите этот код, интерпретатор выдаст исключение еще на этапе создания класса C:
Вывод: Задача проверяет знание не только того, как вызываются методы, но и того, как Python внутренне строит иерархии классов и не позволяет создавать некорректные наследования.
✍🏻 Напишите в комментариях, вы смогли бы решить такую задачу без подсказки? Какой первый ответ вам пришел в голову? #python #программирование #разработка #архитектура
📙 Как устроен Python. Гид для разработчиков, программистов и интересующихся [2019] Харрисон
📗 Python. Исчерпывающее руководство [2023] Бизли Д.
📕 Мощный Python: Шаблоны и стратегии работы с современным Python [2025] Максвелл Аарон
📒 Python для хакеров [2023] Ли Воган
📙 Сверхбыстрый Python [2023] Тиаго Антао
📒 Основы искусственного интеллекта в примерах на Python. 2-е изд. [2023] Анатолий Постолит
💡 Physics.Math.Code // @physics_lib
class A:
def process(self):
return 'A'
class B(A):
def process(self):
return 'B'
class C(A, B):
pass
obj = C()
print(obj.process())
📜 Варианты ответов:
⚡️ — 1. А
❤️ — 2. B
👍🏻 — 3. Будет вызвано исключение TypeError
👾 — 4. С
Правильный ответ: 3. Будет вызвано исключение TypeError. Но почему так сработает?
Пояснение: Код не сможет быть даже исполнен из-за ошибки в определении класса C. При создании класса C Python пытается построить порядок разрешения методов (MRO). Класс C наследуется от A и B, при этом класс B сам является наследником A.
Это создаёт противоречивую иерархию, которую невозможно выстроить линейно и логично. С точки зрения MRO, класс A не может находиться в иерархии как до класса B (так как B наследуется от A), так и после него (так как C наследует от A после B). Это противоречие приводит к ошибке. Если вы запустите этот код, интерпретатор выдаст исключение еще на этапе создания класса C:
TypeError: Cannot create a consistent method resolution order (MRO) for bases A, B
Вывод: Задача проверяет знание не только того, как вызываются методы, но и того, как Python внутренне строит иерархии классов и не позволяет создавать некорректные наследования.
✍🏻 Напишите в комментариях, вы смогли бы решить такую задачу без подсказки? Какой первый ответ вам пришел в голову? #python #программирование #разработка #архитектура
📙 Как устроен Python. Гид для разработчиков, программистов и интересующихся [2019] Харрисон
📗 Python. Исчерпывающее руководство [2023] Бизли Д.
📕 Мощный Python: Шаблоны и стратегии работы с современным Python [2025] Максвелл Аарон
📒 Python для хакеров [2023] Ли Воган
📙 Сверхбыстрый Python [2023] Тиаго Антао
📒 Основы искусственного интеллекта в примерах на Python. 2-е изд. [2023] Анатолий Постолит
💡 Physics.Math.Code // @physics_lib
Please open Telegram to view this post
VIEW IN TELEGRAM
👍54❤36🔥11⚡3🌚2👨💻2❤🔥1😢1👾1
This media is not supported in your browser
VIEW IN TELEGRAM
Можно ли поставить дом на шары, чтобы спасти его от землетрясения? 🏠
❌ Почему простые шары не сработают? Представьте дом на четырех бильярдных шарах. Проблемы:
→ Они могут выкатиться в сторону.
→ Давление в точке контакта огромно, и шар просто продавит пол.
→ Любой порыв ветра заставит дом качаться.
✅ А что тогда сработает? Инженеры давно разработали системы, которые отделяют здание от вибраций при землетрясениях. Это как поставить дом на "амортизаторы".
1. Сейсмические изоляторы (Сейсмоизоляция):
➖Маятниковые изоляторы: Представьте не шар, а огромную "линзу", внутри которой стальной шар качается по специальной чаше. При землетрясении здание плавно "раскачивается" на этой чаше, как маятник, гася энергию.
➖Слинговые изоляторы: Здесь используются опорные конструкции, работающие на растяжение, которые позволяют зданию качаться в определенных пределах.
➖Рельсовые системы: Здание устанавливается на специальные рельсы, позволяя ему смещаться при подземных толчках.
2. Сейсмические гасители (Демпферы). Если изоляторы — это "подвеска", то демпферы — это "тормоза". Их ставят внутри здания, чтобы поглощать энергию колебаний. Бывают:
➖Вязкостные: Как гигантские амортизаторы в автомобиле.
➖Массовые (динамические гасители): Огромный шар или маятник на верхних этажах, который раскачивается в противофазе основным колебаниям и гасит их. Знаменитый Тайбэй 101 использует такой 660-тонный шар!
3. Сейсмические компенсаторы (Тросовые системы)
➖ Системы стальных тросов и растяжек, которые перераспределяют нагрузку и не дают зданию сложиться, как карточный домик.
Идея "катящейся опоры" — гениальна в своей основе, и инженеры воплотили ее в жизнь, создав сложные и надежные системы сейсмической изоляции. Благодаря им современные здания в сейсмоопасных зонах могут пережить даже очень сильные толчки, сохранив жизни людей и свою целостность. #землетрясение #строительство #инженерия #технологии #геология #архитектура #механика #разрушения #колебания #волны #физика #physics #эксперименты
💡 Physics.Math.Code // @physics_lib
❌ Почему простые шары не сработают? Представьте дом на четырех бильярдных шарах. Проблемы:
→ Они могут выкатиться в сторону.
→ Давление в точке контакта огромно, и шар просто продавит пол.
→ Любой порыв ветра заставит дом качаться.
✅ А что тогда сработает? Инженеры давно разработали системы, которые отделяют здание от вибраций при землетрясениях. Это как поставить дом на "амортизаторы".
1. Сейсмические изоляторы (Сейсмоизоляция):
➖Маятниковые изоляторы: Представьте не шар, а огромную "линзу", внутри которой стальной шар качается по специальной чаше. При землетрясении здание плавно "раскачивается" на этой чаше, как маятник, гася энергию.
➖Слинговые изоляторы: Здесь используются опорные конструкции, работающие на растяжение, которые позволяют зданию качаться в определенных пределах.
➖Рельсовые системы: Здание устанавливается на специальные рельсы, позволяя ему смещаться при подземных толчках.
2. Сейсмические гасители (Демпферы). Если изоляторы — это "подвеска", то демпферы — это "тормоза". Их ставят внутри здания, чтобы поглощать энергию колебаний. Бывают:
➖Вязкостные: Как гигантские амортизаторы в автомобиле.
➖Массовые (динамические гасители): Огромный шар или маятник на верхних этажах, который раскачивается в противофазе основным колебаниям и гасит их. Знаменитый Тайбэй 101 использует такой 660-тонный шар!
3. Сейсмические компенсаторы (Тросовые системы)
➖ Системы стальных тросов и растяжек, которые перераспределяют нагрузку и не дают зданию сложиться, как карточный домик.
Идея "катящейся опоры" — гениальна в своей основе, и инженеры воплотили ее в жизнь, создав сложные и надежные системы сейсмической изоляции. Благодаря им современные здания в сейсмоопасных зонах могут пережить даже очень сильные толчки, сохранив жизни людей и свою целостность. #землетрясение #строительство #инженерия #технологии #геология #архитектура #механика #разрушения #колебания #волны #физика #physics #эксперименты
💡 Physics.Math.Code // @physics_lib
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍53❤19🔥19😱3❤🔥1✍1🗿1