【发布时间】:2010-09-09 11:11:15
【问题描述】:
问题:我有一个类,其中包含一个模板方法execute,它调用另一个方法_execute。子类应该覆盖_execute 以实现某些特定功能。此功能应记录在_execute 的文档字符串中。
高级用户可以创建自己的子类来扩展库。但是,处理此类子类的另一个用户应该只使用execute,所以如果他使用help(execute),他将看不到正确的文档字符串。
因此,最好修改基类,使子类中execute 的文档字符串自动替换为_execute 的文档字符串。任何想法如何做到这一点?
我正在考虑使用元类来做到这一点,以使其对用户完全透明。
【问题讨论】:
-
execute 的文档字符串不能仅仅读取“does ... 然后调用_execute,哪些子类应该被覆盖;查看_execute 的文档以了解详细信息”有什么好的理由吗?如果希望用户提供基类,这似乎是最符合 Python 的方法。
-
如果用户键入 help(o.execute) 他会感觉有点不对劲 a) 没有得到他可能想要的信息 b) 被告知查看一些可疑的方法 _execute 可能他甚至不知道存在。对于库的天真用户来说,这只是太多的实现细节。