Transcrypt: объект JavaScript в объект Python

Я пытаюсь создать привязку Python для XGL ( https://www.xalys.com/) с помощью Transcrypt.

Со стороны Python я обнаружил, что вы можете наследовать и расширять объекты JavaScript, делать то, что вы хотите, и передавать их обратно в библиотеку JavaScript.

Аналогично привязке React, найденной здесь https://github.com/doconix/pyreact/blob/master/src/scripts/pyreact.py, я делаю:

class ComponentMeta(type):        
  def __new__ (meta, name, bases, attribs):
    cls = type.__new__ (meta, name, bases, attribs)
    descrip = Object.getOwnPropertyDescriptor(cls, 'name')
    descrip.value = name
    Object.defineProperty(cls, 'name', descrip)
    return cls

class AbstractComponent(object, metaclass=ComponentMeta):
  def __init__(self, props):
    object.__init__(self)

class MyClass(AbstractComponent, MyJsClass.prototype):
  def __init__(self, a, b):
    AbstractComponent.__init__(self)
    MyJsClass.apply(self, [ a, b ])
  def doSomething(self):
    # Calling js method doSomething
    MyJsClass.prototype.doSomething.call(self)
  def doSomethingElse(self, myObject: MyClass):
    # Calling js method doSomethingElse
    MyJsClass.prototype.doSomethingElse.call(self, myObject)
  def doSomethingElse(self) -> MyClass:
    # Calling js method giveMeAnotherInstance, returns a new instance of MyJsClass
    return MyJsClass.prototype.giveMeAnotherInstance.call(self)        

myObject = MyClass(1, 2)
mySecondObject = MyClass(2, 3)
# Call a js method
myObject.doSomething()
# Call another js method with a Python Object (but valid Javascript Object)
myObject.doSomethingElse(mySecondObject)
# Get a new instance
myThirdObject:MyClass = myObject.giveMeAnotherInstance()

type(myThirdObject) is MyClass # returns false

Как я могу преобразовать объект myThirdObject в допустимый объект MyClass?

В Java (с GWT) и в C# (с Bridge.Net) очень легко переключаться между языком и JavaScript, я что-то пропускаю с Transcrypt?

Я старался:

  def doSomethingElse(self) -> MyClass:
    # Calling js method giveMeAnotherInstance, returns a new instance of MyJsClass
    return dict(MyJsClass.prototype.giveMeAnotherInstance.call(self)) 

Но это не работает...

0 ответов

Другие вопросы по тегам