#javascript #python #scope
#javascript #питон #область видимости
Вопрос:
Используя PyMiniRacer, я мог бы использовать объекты Python в Javascript; используя библиотеку PyV8:
import PyV8
class Scope(PyV8.JsClass):
def __init__(self):
self.obj1 = Object1()
self.obj2 = Object2()
pythonScope = Scope()
context = PyV8.JsContext(pythonScope)
context.enter()
context.eval(...)
И используя этот код, javascript может получить доступ к свойствам Scope
: obj1
и obj2
Для PyMiniRacer, глядя на код, MiniRacer
класс, похоже, не принимает никаких аргументов в конструкторе, поэтому я не вижу, как я мог бы добавить класс области видимости Python в область видимости JS. Существует ли конкретный способ определения класса, чтобы иметь возможность добавлять набор классов python в область JS, или мне нужно ввести их в область JS, используя метод, который я пропустил при просмотре исходного кода?
В Ruby RubyRacer (я понимаю, что RubyRacer и PyMiniRacer — это отдельные проекты разных авторов, хотя PyMiniRacer вдохновлен RubyRacer) объекты в области Ruby могут быть встроены путем вызова context["funcName"] = funcName]
, но на Python…
>>> from py_mini_racer import py_mini_racer
>>> context = py_mini_racer.MiniRacer()
>>> def helloWorld(num):
return num * 2
>>> context["helloWorld"] = helloWorld
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
context["helloWorld"] = helloWorld
TypeError: 'MiniRacer' object does not support item assignment
>>>
…это вызывает ошибку. Я тоже попробовал context.__dict__["helloWorld"] = "helloWorld"
, и запуск context.eval(helloWorld(5))
возвращает ReferenceError: helloWorld is not defined
ошибку. Все, что он делает, это позволяет мне вызывать context.helloWorld(5)
, что не помогает при выполнении из JS.
Как я могу вставить объекты Python в область JS, чтобы в коде JS я мог вызывать и получать доступ к методам и атрибутам из объекта Python?
Ответ №1:
К сожалению, PyMiniRacer не поддерживает привязку объектов или функций Python к контексту JavaScript, поэтому невозможно вызвать код Python из кода JavaScript.
Комментарии:
1. Хорошо, спасибо. Знаете ли вы какие-либо другие интерпретаторы JS на основе V8 для Python, которые активно поддерживаются и поддерживают встраивание объектов python? Спасибо.
2. Взгляните на V8Py