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

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

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

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

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

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

1 ответов

7 просмотров

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

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

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

Добрый день, не подскажите, если в OC-V3 поменять страндартную директорию /storage/ на /storage2/ - не будет сильно много проблем ?
Max Dubovsky
32
'frakturBold' => ['𝖆', '𝖇', '𝖈', '𝖉', '𝖊', '𝖋', '𝖌', '𝖍', '𝖎', '𝖏', '𝖐', '𝖑', '𝖒', '𝖓', '𝖔', '𝖕', '𝖖', '𝖗', '𝖘', '𝖙', '𝖚', '𝖛', '𝖜', '𝖝', '𝖞', '𝖟', '𝕬', '𝕭', '𝕮', '𝕯'...
Roma
4
А сколько часов мак держит зарядку в рабочем режиме? Например мой Redmi Mac (просто наклейка от айфона осталась, налепил) по началу держал часов 5 с парой открытых штормов и ...
Ross
8
Каким то образом можно определить ширину экрана пользователя перед загрузкой partial-а? Надо рассчитать ширину кадров слайдера для ресайза картинок для container-fluid.
Point 111
22
Ребят, а вот такой вопрос: если я владелец бота анонимного чата, в котором, например, имеются подписки, используя какую-нибудь ЮКассу (или тому подобное, в общем с налогами, в...
Eugene Неелов
8
а давно такие жирные буквы в админке?
Миша
4
Гнева и тупости пост. Как блять можно работать с маркетологами? Их в детстве всех родители случайно цепляли об дверные откосы? Поступила таска, на сайте "лишний счетчик Google...
Igor
4
а у тг (бот) апи вообще есть статусная страница, кстати?
e\\/gen
5
Вообще сейчас эти все провайдеры облаков оборзели. Если тебе нужно 4 ядра и 4 гб., хер где такую конфигурацию найдешь. Суют тебе сразу либо 8гб. либоа сразу 16 гб., они мне на...
Igor
4
Всем привет. А никто не в курсе у бота может быть заблокированна возможность принимать звезды? На одном боте вызываю sendInvoice с нужными параметрами все ок, на втором дела...
John Doe
2
Карта сайта