Вот уже неделю сталкиваюсь с питоном в боевых условиях - понадобилось встроить его поддержку в С++-ный проект и реализовать на нем часть функционала. Теперь каюсь за то, что раньше недооценивал подобные языки (в смысле скриптовые). Более того, я просто в восторге от питона.
Например, мне нужно было сделать следующее: C++-ный код запускает Python-скрипт, который обрабатывает некоторые данные. Пользователь может захотеть написать свои обработчики для конкретных данных. Сложность состояла в том, как объяснить исходному скрипту, что есть другие реализации. Вот как позволяет это делать Python:
Теперь, все что надо пользователю - это написать класс с именем тип_данныхExt и методом process_data() и сохранить его в файле тип_данных.py. Получается намного проще, чем делать это на С++, причем проще и для разработчика и для пользователя.
пятница, 30 мая 2008 г.
В восторге от Python'a
Автор: sash_ko на 13:00
Ярлыки: Программизм, python
Подписаться на:
Комментарии к сообщению (Atom)
3 комментария:
мне тут мужики говорят, что
exec "from " + name + " import " + class_name
будет работать медленно и небезопасно, а эксепшены подавлять тоже не хорошо - лучше сходить на http://pypi.python.org и там посмотреть как библиотеки реализованны )). Как работется на новом месте?
вот, мужики наваяли:
testExt.py:
class Plugin(object):
def __init__(self):
print "Initialized"
def processed(self):
print "Processed"
test_imp.py:
import traceback
def loadPlugin(mod_name,class_name = "Plugin"):
try:
mod = __import__(mod_name + "Ext")
return getattr(mod,class_name)()
except:
traceback.print_exc()
return None
loadPlugin("test").processed()
грят так лучше будет.
Спасибо за подсказку и ссылку. Как раз то, что надо, а то до __import__ наверно бы не скоро дошел, читая доку по диагонали :)
Работается отлично, работа оказалась даже интересное, чем ожидал (в частности из-за питона). Сейчас разбираюсь в boost::asio и boost::python. Дальше на очереди Qt. Вообщем есть чем заняться :)
Отправить комментарий