【发布时间】:2011-01-16 22:03:08
【问题描述】:
短篇小说:
我想在一个流行的库中对 MainClass 和它所依赖的 HelperClass 的行为进行轻微更改。我可以通过子类轻松地扩展两者,但是我如何告诉顶级类使用我的辅助类的扩展版本?
MainClass 通过简单的实例化(例如,helperItem = HelperClass())和从 yield() 生成 HelperClass 的实例。 HelperClass 与 MainClass 编码在同一模块中。
更长的:
对于 Django 表单,我想生成一个嵌套字典,其中包含指定该表单的 HTML 显示的数据。 Django Form 对象通过将 Field 对象包装在 BoundField 类中来生成 HTML,该类具有进入 Field 数据结构以生成适当的 HTML 字符串的方法。
我想:
- 扩展/修改表单以使用我的扩展版 BoundField,并且
- 扩展表单以添加一个循环遍历其字段的方法 打电话 getHtmlSpec() 。
(这里我略过重要的 Django 实现细节,比如是否扩展 Form 或 BaseForm,以及是否扩展 BoundField 或 / 和 Input 小部件。)
显然,我可以通过将 Form 扩展到“字段”并生成这些东西来做到这一点,这可能是更好的设计。但这似乎更优雅,即使这不是最好的方法,我也很好奇。
【问题讨论】: