Создание Python-модулей

Python-модуль предназначен для хранения в репозитории кода макросов на языке Python. Модуль может быть открыт и отредактирован в среде разработки «Форсайт. Аналитическая платформа». Доступно выполнение Python-кода без отладки в среде разработки или из прикладного кода на Fore. Разработку и отладку самих макросов рекомендуется производить в специализированных средах разработки, ориентированных на работу с языком Python.

Примечание. Для работы потребуется установленный на компьютере язык Python. Более подробно об установке читайте в подразделе «Подключение дополнительных модулей к «Форсайт. Аналитическая платформа».

Создание Python-модуля

В созданном модуле напишите код с использованием синтаксиса языка Python или вставьте заранее написанный и протестированный макрос. В среде разработки «Форсайт. Аналитическая платформа» поддерживается подсветка ключевых слов Python, автоформатирование кода, IntelliSense, при переходе к новым строкам учитывается выставленная ранее табуляция, которая является важной частью синтаксиса языка Python. При вводе в тексте различных скобок, кавычек, апострофов автоматически добавляется соответствующий второй элемент - закрывающая скобка, кавычка, апостроф. Также автоподстановка реализована для конструкции try-except при указании двоеточия после ключевого слова try.

Для кода применяется оформление, которое задано в параметрах среды разработки.

Для использования кода из Python-модуля в коде на Fore предназначены ресурсы сборки Python: Для выполнения отдельных функций используйте метод Python.InvokeModule или IPythonUtils.InvokeModule, для работы с классами используйте конструктор PythonClassObject.CreateFromModule. Также можно использовать оператор Pyimport, который позволяет импортировать и напрямую вызывать функции из Python-модулей.

Доступ к репозиторию

В коде Python-модуля можно получить доступ к текущему соединению с репозиторием. Для этого предназначен метод GetActive класса MetabaseClass. Данный метод возвращает контекст для работы с репозиторием, описываемый интерфейсом IMetabase.

from foresight.metabase import *
def CurrentMB():
    mbcls = CMetabaseClass.Create()
    mb = mbcls.GetActive()
    # Возврат текущего контекста для работы с репозиторием
    return mb

Примечание. Метод GetActive можно использовать только при разработке в Python-модуле репозитория «Форсайт. Аналитическая платформа».

Также соединение с репозиторием может быть сформировано в прикладном коде Python-модуля. Различные примеры кода на языке Python, которые могут использоваться как внутри Python-модуля платформы, так и при разработки в сторонних средах разработки, представлены в подразделе базы знаний «Работа в Python».

Связь Python-модулей

Стандартные команды Python import и from...import позволяют получить доступ к коду, который реализован в других Python-модулях. В качестве параметра указывается идентификатор Python-модуля в репозитории. При выполнении содержимое Python-модуля импортируется один раз и доступно до завершения выполняемого кода.

Рассмотрим пример доступа к коду Python-модуля из другого Python-модуля. Предполагается наличие Python-модуля с идентификатором TESTMODULE, который содержит следующий код:

def summXY(x, y):
    return x + y
 
class Door:
    def __init__(self, color, height, width):
        self.color = color
        self.height = height
        self.width = width
 
    def getDoorDescription(self, comment):
        return comment + ". Цвет: " + self.color + " Размеры: " + str(self.height) + "X" + str(self.width) + " мм."

Получить доступ к коду можно следующими способами:

#1
import TESTMODULE
print(TESTMODULE.summXY(10, 20))
#2
import TESTMODULE as tm
print(tm.summXY(30, 40))
#3
from TESTMODULE import Door
tclass = Door("Red", 2000, 800)
print(tclass.getDoorDescription("Межкомнатная дверь"))
#4
from TESTMODULE import summXY as summ
print(summ(50, 60))

При выполнении второго Python-модуля различными способами будет получен доступ к функции и классу из первого Python-модуля.

См. также:

Разработка прикладного приложения