Как встроить ф-ию питона
От: UncleFox  
Дата: 03.05.07 12:26
Оценка:
Доброго времени суток!
Как-то в теме sc посоветовал «встроить интерпретатор языка с динамической типизацией (python, etc)». С питоном всё ясно. Там есть некая функция, которая мастерит класс My_Class и потом по нему создаётся обьект my_object.


def cls_factory_f(InFuncTuple):
        class X(object):
                pass
        i = int(0)
        sizeIFT = len(InFuncTuple)
        while i < sizeIFT:
                setattr(X, InFuncTuple[i], InFuncTuple[i+1])
                i += 2
        return X

my_value_name = "val"
my_value = int(0)
my_value_name1 = "val1"
my_value1 = int(1)

InFuncTuple = tuple ([my_value_name])+tuple ([my_value])+\
              tuple ([my_value_name1])+tuple ([my_value1])

My_Class = cls_factory_f(InFuncTuple)        
my_object = My_Class()

print "val: ", my_object.val
print "val1: ", my_object.val1


Вопрос такой: Каким образом я могу из C++ добиться отработки функции – фабрики, передав ей в качестве параметра tuple, и после этого воспользоваться объектом?

Желательно на примере.
Re: Как встроить ф-ию питона
От: Tonal- Россия www.promsoft.ru
Дата: 05.05.07 11:12
Оценка: 2 (1)
Здравствуйте, UncleFox, Вы писали:

UF>Доброго времени суток!

UF>Как-то в теме sc посоветовал «встроить интерпретатор языка с динамической типизацией (python, etc)». С питоном всё ясно. Там есть некая функция, которая мастерит класс My_Class и потом по нему создаётся обьект my_object.

UF>
UF>def cls_factory_f(InFuncTuple):
UF>        class X(object):
UF>                pass
UF>        i = int(0)
UF>        sizeIFT = len(InFuncTuple)
UF>        while i < sizeIFT:
UF>                setattr(X, InFuncTuple[i], InFuncTuple[i+1])
UF>                i += 2
UF>        return X

UF>my_value_name = "val"
UF>my_value = int(0)
#Проще надо быть: 
my_value = 0
UF>my_value_name1 = "val1"
UF>my_value1 = int(1)
#Проще надо быть: 
my_value1 = 1

UF>InFuncTuple = tuple ([my_value_name])+tuple ([my_value])+\
UF>              tuple ([my_value_name1])+tuple ([my_value1])
#Проще надо быть:
InFuncTuple = (my_value_name, my_value,
  my_value_name1, my_value1)
#А лучще:
InFuncTuple = ((my_value_name, my_value),
  (my_value_name1, my_value1))
#Тогда cls_factory_f заметно упроститься
UF>My_Class = cls_factory_f(InFuncTuple)        
UF>my_object = My_Class()

UF>print "val: ", my_object.val
UF>print "val1: ", my_object.val1
UF>


UF>Вопрос такой: Каким образом я могу из C++ добиться отработки функции – фабрики, передав ей в качестве параметра tuple, и после этого воспользоваться объектом?

У python-а очень хорошая документация. Там всё довольно подробно описано.
Смотри раздел "Extending and Embedding the Python Interpreter" главу 5. "Embedding Python in Another Application"
UF>Желательно на примере.
Там и примеры есть
... << RSDN@Home 1.2.0 alpha rev. 677>>
Re[2]: Как встроить ф-ию питона
От: UncleFox  
Дата: 07.05.07 05:17
Оценка:
Спасибо, нашёл. Курю мануал . Действительно на первый взгляд всё просто .
А насчёт кривоватости кода, так это был первый питоновский опыт.
Огромное спасибо!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.