Python 我正在尝试建立一个动态学习的知识管理系统。当它来临时

Python 我正在尝试建立一个动态学习的知识管理系统。当它来临时,python,class,serialization,dynamic,persistence,Python,Class,Serialization,Dynamic,Persistence,我正在尝试建立一个知识管理系统,以一种很小的方式模仿人类的学习能力。它处理的是它已经知道的概念的新实例,这使它能够进一步改进/专门化已知概念的知识库。它还可以学习以前从未遇到过的新概念。当遇到新概念时,它会与现有概念建立关系。我认为编程语言的本机面向对象范式本身可能是知识表示的理想数据模型。例如,类是概念(事物),具有描述概念的属性和描述其(概念/事物)如何交互的方法。因此,汽车是一个通用概念,因此被建模为一个类,而我的特定汽车则是该汽车的一个对象实例。它显然受益于面向对象语言在处理类和对象时提

我正在尝试建立一个知识管理系统,以一种很小的方式模仿人类的学习能力。它处理的是它已经知道的概念的新实例,这使它能够进一步改进/专门化已知概念的知识库。它还可以学习以前从未遇到过的新概念。当遇到新概念时,它会与现有概念建立关系。我认为编程语言的本机面向对象范式本身可能是知识表示的理想数据模型。例如,类是概念(事物),具有描述概念的属性和描述其(概念/事物)如何交互的方法。因此,汽车是一个通用概念,因此被建模为一个类,而我的特定汽车则是该汽车的一个对象实例。它显然受益于面向对象语言在处理类和对象时提供的继承和上下导航能力。考虑到Python强大的动态特性,我计划为此使用它

这种学习系统的几个含义是

  • 由于系统学习了它已经知道的有关概念(类和对象)的新事物,因此除了更改属性值外,还必须通过添加/删除属性(包括方法)动态修改类的定义,因此静态定义类是不够的。方法特别棘手,因为存在与它们相关联的代码

  • 当遇到新概念时,它必须动态地创建新类

  • 每次系统启动时,由于明显的原因,应将所有先验知识加载到系统中。在这种情况下,它意味着所有知识类(包括动态创建的知识类)的所有“当前”版本(包括任何添加/删除或更改的属性/值/方法),即需要相当全面的序列化/持久化机制

  • 在会话结束时(分解),它必须查看“所有”知识类和对象,并将它们序列化。有些可能是新定义的,有些可能更改了属性甚至方法(代码)。需要一种方法来获取所有这些对象/类、它们的最新定义并序列化它们以实现持久性

    下次系统运行时,在初始化期间,它需要读取并执行所有类定义,并恢复对象实例的状态

    我环顾四周,发现了诸如pickle、json、ZODB、inspect模块等零碎的解决方案,但似乎没有一个能够序列化动态类,包括方法的代码

    这里也提出了类似的问题 但是大多数受访者认为没有任何令人信服的用例


    任何潜在客户都将不胜感激。

    快速说明:python类和对象属性在运行时都是可修改的<代码>a=Foo();a、 new_attr=“new attribute added”完全可以。@msvalkon谢谢。我知道这一点。事实上,您可以动态添加新方法,并使用type()元类创建新类。但不确定是否可以动态添加到继承列表中。当系统稍后了解到有关该概念的新事实时,这将非常有用,这要求它从另一个类中额外继承。参考我之前针对mvsvalkon的评论,还有一个额外的含义/问题。如果一个类定义动态更改以包含额外的继承,那么所有派生(直接/间接)类会发生什么情况?他们的mro会相应地调整吗?像这样动态添加属性只会影响特定对象,不会应用于类定义。我试图指出,这种动态行为是内置的,也许你或其他人可以从中找到一种构建的方法。