TGTGInsighttelegram intelligenceLIVE / telegram public index
← Python Заметки

TGINSIGHT SIMILAR POSTS

Најди сличен содржај

Изворен канал @pythonotes · Post #219 · 1 мар.

Как получить класс из модуля зная только его dotted-path? Что за dotted-path? Это путь импорта через точки вроде такого: "package.module.clsName" Так как мы не можем закинуть строку в директиву import то повторим то, что она делает только "вручную" mod = __import__('package.module', fromlist=['clsName']) cls = getattr(mod, 'clsName') Похожий способ с importlib import importlib module = importlib.import_module('package.module') cls = getattr(module, 'clsName') В обоих случаях приходится дополнительно обрабатывать строку чтобы отрезать имя класса от имени модуля. Так как мы сначала импортим модуль а потом достаём из него нужный объект. Есть ли способ просто закинуть всю строку и получить результат? Если пишете проект на Django то в нём есть функция import_string(). Она используется для импорта объектов, указанных в settings.py в виде dotted-path. from django.utils.module_loading import import_string cls = import_string('package.module.clsName') Если же у вас "чистый" Python то на помощь придёт модуль pydoc. У него тоже есть аналогичный метод для импорта объектов по dotted-path. from pydoc import locate cls = locate('package.module.clsName') В Python3.9 добавили еще один способ ресолвинга имени в объект. Теперь это самый актуальный способ на данный момент! import pkgutil cls = pkgutil.resolve_name('package.module.clsName') ____________ Конечно же это не относится только к классам. Точно так же можно импортнуть любой объект, вложенный в модуль. #tricks

Hashtags

Резултати

Пронајдени 1 слични објави

Пребарај: #tricks

当前筛选 #tricks清除筛选
sudo recast

@sudo_recast · Post #918 · 17.04.2025 г., 09:47

A useful command when you encounter conflicts while cherry-picking: tig HEAD $(git rev-parse CHERRY_PICK_HEAD 2>/dev/null) -- $(git diff --name-only --diff-filter=U | head -1) #tricks@sudo_recast

Hashtags