如何修改一个库的类以使其使用另一个库类的扩展?

2024-03-29 00:13:08 发布

您现在位置:Python中文网/ 问答频道 /正文

短篇故事:

我想对一个流行库中的main类和它所依赖的HelperClass的行为做一些细微的改变。我可以通过子类化轻松地扩展这两个类,但是如何告诉顶级类使用我的helper类的扩展版本呢?你知道吗

main类通过简单的实例化(例如helperItem=HelperClass())和yield()生成HelperClass的实例。HelperClass与MainClass在同一模块中编码。你知道吗

更长:

对于Django表单,我想生成一个嵌套字典,其中包含指定该表单的HTML显示的数据。Django表单对象通过将字段对象包装到BoundField类中来生成HTML,BoundField类具有访问字段数据结构以生成适当HTML字符串的方法。你知道吗

我想:

  • 扩展/修改窗体以使用扩展版本的BoundField,以及
  • 扩展窗体以添加循环遍历其字段的方法 打电话 每一个的getHtmlSpec()。你知道吗

(这里我将介绍一些重要的Django实现细节,比如是扩展表单还是BaseForm,以及是扩展BoundField还是/和输入小部件。)

显然,我可以通过将表单扩展到“字段”并生成这些内容来实现这一点,这可能是更好的设计。但这似乎更优雅,我很好奇,即使这不是最好的方法。你知道吗


Tags: 对象django实例方法版本helper表单main
1条回答
网友
1楼 · 发布于 2024-03-29 00:13:08

这是设计类的一种丑陋的方式,我想还有一种更丑陋的方式可以绕过它:

from django.forms import forms

class MyBoundField(object):
    pass

forms.BoundField = MyBoundField

相关问题 更多 >