我正在寻找适当的解决方案,我已经做了这段代码。我只想在打印XML时打印我的XML。在Python中动态覆盖魔术方法
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()
对不起大家了混乱...我想刨这里是我搞砸了第一
你只想做你写什么,因为'self'不存在那里。试试'doc .__ str__ = print_doc'。 – jonrsharpe
您涉嫌工作的代码不是用户友好的,因为它实际上并不工作,但除此之外,我不明白为什么您说它不是人性化的。 – Goyo