Форум сайта python.su
В пхп есть такая штука автозагрузка классов, идея в том что в одном месте описывается какой файл нужно заинклудить имея определенное имя класса (в файле содержится описание класса), а потом просто идет обращение к классу и все автоматом инклудится, есть ли что подобное в питоне для авто импорта модулей или какие варианты реализаций?
Отредактировано (Дек. 26, 2009 14:42:04)
Офлайн
1. php - не питон
2. Что именно хочется сделать? На примере, пожалуйста.
3. Чем стандартный импорт не угодил?
Офлайн
FerromanХотелось чтобы это выполнялось автоматически а не обезьянить вручную, из файла в файл десятками одни и теже импорты.
3. Чем стандартный импорт не угодил?
FerromanЭто тут обсалютно не причем.
1. php - не питон
Отредактировано (Дек. 26, 2009 17:03:47)
Офлайн
Честно говоря бредовая идея. Может попробовать с помощью __import__? http://docs.python.org/library/functions.html#__import__ Кладешь имена всех нужных модулей в файл, где нужно его читаешь и импортируешь с помощью __import__
ps. когда в питоне что-то не получается сделать по простому - может ты не в ту сторону движешься?
Офлайн
expeeаргументируй свое утверждение насчет бредовости.
Честно говоря бредовая идея.
expeeпо твоему тупо из файла в файл повторят код - это проще чем не делать это?
ps. когда в питоне что-то не получается сделать по простому - может ты не в ту сторону движешься?
Офлайн
Что-то у меня всегда так получается, что список нужных импортов для каждого модуля - разный.
Идея писать их каждый раз заново ни разу не напрягает. Тем более что можно импортировать, например, иногда модуль а в другом случае имя из этого модуля.
Думаю, что попытка импортировать все скопом приведет к форменному бардаку. Но при сильном желании делается легко:
import_all.py
from os.path import abspath, dirname, join
from logging import getLogger
# ....
from all_modules import *
Офлайн
Явное - лучше неявного.
Простое - лучше сложного.
Честно - не понимаю, в чём проблема, и почему это вообще “проблема”.
Если вы из файла в файл повторяете код, да ещё и так часто, что это уже напрягает - значит у вас фундаментально что-то не так.
Офлайн
Ferromanа у вас нет таких классов которые везде переиспользуются и импорты не повторяются, все в каждом файле с нуля переписываете, и это не напрягает, копи-пастить вам проще? (DRY) зачем повторять если можно избавится от повторений?, явное\неявное это без фанатизма никакой сложности чтобы вынести логику по определению импорта в отдельное место нет и она там объявлена будет вполне явно. Лично меня напрягает каждый раз лезть к верху файла вспомнить где расположен класс писать к нему путь я хочу чтобы это делалось автоматом, а по нужности указывать явно.
Если вы из файла в файл повторяете код, да ещё и так часто, что это уже напрягает
Андрей СветловИмхо вся это проблема решается просто тем что нужно помнить что есть модуль который делает автоимпорт и там все вполне явно объявлено, а если нужно перекрыть имя своим импортом в ручную и все. На самом деле идея схожа с такими паттернами как registry или factory - это глобальные точки для хранения\создания объектов по некоторому ключу, тут по этому ключу делается немного другая задача - импорт.
Согласен, идея плохая и не рекомендуемая. Трудно будет читать код после, возможны интересные side-effects. Но если очень хочется - стоит попробовать. Чтобы набить себе необходимый комплект шишек и через время вернуться к тому, что используют люди во всем мире.
Отредактировано (Дек. 26, 2009 19:38:19)
Офлайн
Это, наверное, прозвучит странно, но классов которые ВЕЗДЕ переиспользуются - нет, таких нету. Так что копипастить - не приходится.
Я, честно говоря, затрудняюсь даже придумать когда так может получится.
Явное - всегда лучше неявного, даже, если страдает DRY (кстати, чего быть не может ибо этот принцип относится только именно к коду, к действующему, не к любой строчке текста программы. Смысл не в том что бы не повторять строчки).
Так что проблема диковато звучит, надуманно я бы сказал.
Отредактировано (Дек. 26, 2009 19:15:20)
Офлайн
FerromanСлово лучше, бредовые это конечно круто, но давайте более аргументировано)
Явное - всегда лучше неявного, даже, если страдает DRY
Ferromanа импорты это не дествующий код? есть не действующие строчки текста программы?
кстати, чего быть не может ибо этот принцип относится только именно к коду, к действующему, не к любой строчке текста программы.
FerromanА в чем смысл?) в том что это “круто” или “лучше” ?)
Смысл не в том что бы не повторять строчки
Отредактировано (Дек. 26, 2009 20:22:40)
Офлайн