我正在为我已经制作的代码寻找合适的解决方案。我只是希望能够在我的XML仍在构建时打印它。
from xml.dom.minidom import Document, DOMImplementation
class MyClass(object):
init():
pass
def create_xml():
doc = Document()
# I know i cannot do that, I know. I need proper solution for that
doc.__str__ = self.print_doc
def print_doc(document):
return document.toprettyxml(encoding='UTF-8')
我们能够找到一种不干净的方式,这有效,所以你可以在这里看到我的想法:
from xml.dom.minidom import Document, DOMImplementation
def create_xml():
doc = Document()
document.__str__ = partial(self.print_doc, document=document)
def print_doc(document):
return document.toprettyxml(encoding='UTF-8')
我的类需要是静态的,因为软件无法处理更多,而不是整个运行期间的一个实例,仍然用户必须在该运行期间创建多个xml(是的,这是搞砸了,但我无法帮助)。 相反,制作奇怪的东西,我做了一些对我有用的东西:
class Child(Document):
def __str__(self):
return document.toprettyxml(encoding='UTF-8')
...所以这个课允许我打印
class MyClass(object):
def create_xml():
return Document()
......所有这一切,因为我必须拥有
def main():
xml = MyClass.create()
print(xml)
...而不是
xml = Document()
对不起大家的混淆......我想这里刨的是我先搞砸了
答案 0 :(得分:1)
为什么不只是子类Document
?
class MyDoc(Document):
def __str__(self):
return self.toprettyxml(encoding='UTF-8')
您还可以创建包装类:
class DocumentWrapper(object):
def __init__(self, doc):
self.doc = doc # doc should be a "Document".
def __str__(self):
return self.doc.toprettyxml(encoding='UTF-8')
答案 1 :(得分:0)
不确定理解,但是如果你想覆盖一个方法,只需覆盖它:)
class XMLDoc(Document):
def __str__(self):
return self.toprettyxml(encoding='UTF-8')
myxml = XMLDoc([.. args ..])
print str(myxml)