Динамическая генерация класса Owlready2 - PullRequest
0 голосов
/ 20 ноября 2018

Я пытаюсь динамически создать класс для онтологии owlready2.Документация предлагает следующую строку кода:

NewClass = types.new_class("NewClassName", (SuperClass,), kwds = { "namespace" : my_ontology })

В моем случае это равно

types.new_class("NewClassName", (onto["ParentClass"],), kwds={'namespace' : onto})

Однако, когда я запускаю приведенный выше код, я получаю следующее исключение:

 Traceback (most recent call last):
    (onto[object.get('owl_dataProperty_parent')],), kwds={'namespace' : onto})
    File "/usr/lib/python3.6/types.py", line 62, in new_class
    return meta(name, bases, ns, **kwds)
 TypeError: __new__() got an unexpected keyword argument 'namespace

Я понятия не имею, что там пошло не так, и после часов отладки я все еще не понимаю.Я использую Python 3.6.6 и версию 0.11 owlready2

1 Ответ

0 голосов
/ 21 ноября 2018

Я понял, что атрибут namespace вообще не нужен.Таким образом, следующее прекрасно работает:

types.new_class("NewClassName", (onto["ParentClass"],))

Хотя это не решает общую проблему, оно ответило на мой вопрос.

Кроме того, кажется, что это способ сделать это вгенерал, ср. форум owlready .Поэтому, возможно, пришло время обновить документацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...