'Subclassing' Python 中的函数?

'Subclassing' a Function in Python?

我正在使用 Python 中的 docx 库,我希望创建 Document Document 的子class NewStyleDoc class 来自 docx。我尝试按如下方式执行此操作:

from docx import Document
class NewStyleDocument(Document):
    # stuff

我收到错误:

TypeError: function() argument 1 must be code, not str

也就是说Document实际上是一个函数。 (我用 type(Document) 验证了这一点)我的问题是:我可以定义一个 class 来继承 Document 的所有属性吗?我的最终目标很简单:我只想做:

doc = NewStyleDocument()

并有一些自定义字体。 (通常每次创建新文档时都必须修改样式。)也许有更简单的方法?

这是来自文档。您的问题似乎是您使用的是模块中内置的构造函数,而不是对象中的构造函数。

Document objects¶
   class docx.document.Document[source]

   WordprocessingML (WML) document. Not intended to be constructed directly. Use docx.Document() to open or create a document.

所以你需要在里面再添加一层(Docx.document.Document)

最简单的方法(因为 docx.Document 似乎是一个工厂函数)可能只是让它做它需要做的事情,这样你就不会重复,然后环绕它:

from docx import Document

def NewStyleDocument(docx=None):
    document = Document(docx)
    document.add_heading('Document Title', 0)
    return document

mydoc = NewStyleDocument()