'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()
我正在使用 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()