Как отобразить класс python на вершину гремлина? - PullRequest
0 голосов
/ 01 апреля 2020

Я надеялся, что отображение класса на вершину в gremlin python будет таким простым:

def toVertex(self,g):
    t=g.addV(type(self))
    for name,value in vars(self).items():
        if debug:
            print("%s=%s" % (name,value))
        t=t.property(name,str(value))
    t.iterate()    

Чтобы избежать каких-либо проблем приведения типов, я подумал, что str (значение) будет гарантировать, что все свойства обрабатываются как строки.

К сожалению, я получаю сообщение об ошибке:

  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/gremlin_python/structure/io/graphsonV3d0.py", line 341, in dictify
    return writer.toDict(typ())
TypeError: __init__() missing 1 required positional argument: 'record'

Что мне здесь не хватает - как это можно исправить?

1 Ответ

0 голосов
/ 01 апреля 2020

Проблема заключалась в том, что тип возвращает не строку, а класс и пытался вызвать конструктор класса, который ожидал запись:

следующий код работает даже без использования str () для значений:

def toVertex(self,g):
    label=type(self).__name__;
    t=g.addV(label)
    for name,value in vars(self).items():
        if debug:
            print("%s=%s" % (name,value))
        t=t.property(name,value)
    t.iterate()    
...