在python中创建抽象层的正确方法

时间:2010-09-28 14:04:05

标签: python

我正在开展一个项目(http://github.com/lusis/vogeler)。其中一个目标是提供可交换的持久性和消息传递后端。我认为我有一个可行的模型,但希望从Python人群中获得关于最佳实践的意见。您可以在此处查看新实施:

http://github.com/lusis/vogeler/blob/master/vogeler/db/generic.py

couch2.py是我的通用子类。

本质上,泛型类提供了一组通用的接口(createdb,usedb,create,update),它们调用私有方法,如_create_db,_use_db等。

我的期望是数据库特定的东西将继承GenericPersistence并覆盖私有方法。这被认为是不好的形式?一般来说,重写私有方法感觉有点奇怪,但最终结果是它有效。我只是想确保我没有打破关于Python中子类化的某种不成文的合同。

1 个答案:

答案 0 :(得分:0)

我认为,按照惯例,单个下划线是一个暗示,该属性是一个可能在将来更改的实现细节。子类不应覆盖或调用强调的方法,因为它们的存在可能不依赖。

所以,我会将强调的方法改为钩子:_update - > update_hook 并要求开发人员覆盖* _hook方法。