Вот про питон:) Мне сейчас представилась возможность выяснить зачем в питоне

сделали локальные импорты. И это пиздец. В очередной раз убеждаюсь, что это - язык, собранный из костылей, которые обмотали синей изолентой, чтобы они не развалились, и подпёрли ещё костылями, чтобы оно не рухнуло из-за смещённого центра тяжести.

Если модуль A импортирует B, а B импортирует C, а C импортирует A, то это называется циклический импорт. И Питон ломается, потому что import - это команда, а не просто информация к сведению. Типа "прочитай вооон тот файлик прямо, блять, сейчас". А если он в процессе чтения файлика A читает B, а в процессе чтения B читает C, и тут его просят опять прочитать A, он говорит, что разработчик ебанулся. Но он делает это со свойственной ему самобытностью. Зачем перегружать человека лишней информацией о циклическом импорте? Просто скажи ему, что не можешь импортировать какой-то из этих классов, и этого будет достаточно, программисты же, сука, телепаты!

Но если очень хочется так импортировать, то есть костылик: кому-то из этих модулей придётся импортировать другой модуль не в первых строчках себя, а где-нибудь внутри функции, чтобы команда импорта исполнилась когда-нибудь потом, не при запуске программы.

Что делать с тайп-хинтами, которые пишутся в определениях методов, спросишь ты? А ничего! Тут тоже есть костылик: "forward reference". Оборачиваешь имя типа в одинарные кавычки, и тогда Питон не ругается, что не знает такой херни. То есть фактически тайп-хинт перестаёт работать, но он есть, чтобы разработчик видел.

И эти люди ругают PHP...

1 ответов

9 просмотров

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

Похожие вопросы

Обсуждают сегодня

Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Ребят, подскажите, пожалуйста, почему в префиксе к ассетам, которые генерируются через фильтр | theme в шаблоне, стал вдруг появляться index.php? Вот так выглядит ссылка на а...
Виталий
1
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Коллеги, может знает кто, можно ли цвет бейджа счётчика в BackendMenu менять без бубнов?
Alex Blaze
3
Карта сайта