我在写一个存储一些数据的Python应用程序。为了存储数据,我用抽象方法编写了一个Connection类(使用Python的abc模块)。这个类是所有存储后端派生自的超类。每个存储后端只有一个目的,例如将数据存储在纯文本文件或XML文件中。Python插件系统 - HOWTO
所有存储后端(包括超类所在的模块)位于一个名为'data_handler'的包中。而每个后端都在一个模块中。
我的应用程序应该能够同时在多个后端存储数据,并在运行时确定哪些存储后端可用。要做到这一点,我有想写一个单一类,其中每个后端必须在导入时注册。但在动态语言中这似乎不太好(如果我误解了这一点,请纠正我)。另一种方式是导入包含import data_handler
的包,然后获取包的__file__
属性,并在dir中搜索超级连接类的子类中的所有Python文件。
我应该使用什么方法,或者有其他方法(也许更好)来做到这一点。
斯特凡
在运行时被发现的后端严格的要求或将静态代码 列举他们的呢?
此功能将是不错的注意必须编辑代码时,我添加一个新的后端
但要你的应用程序总是写所有的后台?
我将有一个类,我可以注册可用的处理程序。数据应写入每个注册的处理程序。但并非所有可用的处理程序都必须注册。
在运行时被发现的后端严格的要求或将在他们的代码静态枚举吗? – Arlaharen 2010-09-07 15:03:21
嗨Stefan,我冒昧地合并了你在这里的2个未注册账户,以及那些声誉和信息。您现在应拥有您在SO上发布的所有内容。如果您的系统中包含更多未注册的帐户,只需将其标记为主持人即可合并。干杯。 – 2011-12-02 07:33:15