2

我正在尝试为 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 和 owlready2 的 0.11 版

4

1 回答 1

1

我发现根本不需要“命名空间”属性。所以以下工作就好了:

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

尽管这不能解决整体问题,但它回答了我的问题。

此外,这似乎是一般的方法,参见。owlready 论坛。所以也许是时候更新文档了。

于 2018-11-21T13:49:58.290 回答