Python 扩展元素和元素树的功能
我想从Python 扩展元素和元素树的功能,python,xml.etree,Python,Xml.etree,我想从xml.etree扩展Element和ElementTree类的功能,并将它们与xml.etree.ElementTree.parse()一起使用 经过几次尝试,我成功地为这个问题创建了一个解决方案,但我想知道是否有更好的解决方案,或者这个解决方案是否存在任何隐患 FooElementTree.py import xml.etree from xml.etree.ElementTree import Element from xml.etree.ElementTree import Ele
xml.etree
扩展Element
和ElementTree
类的功能,并将它们与xml.etree.ElementTree.parse()一起使用
经过几次尝试,我成功地为这个问题创建了一个解决方案,但我想知道是否有更好的解决方案,或者这个解决方案是否存在任何隐患
FooElementTree.py
import xml.etree
from xml.etree.ElementTree import Element
from xml.etree.ElementTree import ElementTree
class FooElement(Element):
def __repr__(self):
return "<FooElement %s at 0x%x>" % (repr(self.tag), id(self))
class FooElementTree(ElementTree):
pass
xml.etree.ElementTree.Element = FooElement
xml.etree.ElementTree.ElementTree = FooElementTree
from xml.etree.ElementTree import parse
import xml.etree
从xml.etree.ElementTree导入元素
从xml.etree.ElementTree导入ElementTree
类元素(元素):
定义报告(自我):
返回“”%(repr(self.tag),id(self))
类FooElementTree(ElementTree):
通过
xml.etree.ElementTree.Element=FooElement
xml.etree.ElementTree.ElementTree=FooElementTree
从xml.etree.ElementTree导入解析
用法:
>>> import FooElementTree
>>> e = FooElementTree.parse('xml.cfg')
>>> e
<FooElementTree.FooElementTree object at 0x023AB650>
>>> r = e.getroot()
>>> r
<FooElement 'configuration' at 0x23c5470>
导入FooElementTree
>>>e=FooElementTree.parse('xml.cfg')
>>>e
>>>r=e.getroot()
>>>r
这就是热补丁的工作方式。但是请注意,在导入任何其他模块(或子模块)之前,也必须应用补丁,而其他模块也使用ElementTree。这就是热补丁的工作方式。但请注意,在导入任何其他模块(或子模块)之前,也必须应用该修补程序(使用ElementTree)。这仍然是python3的有效解决方案吗?这仍然是python3的有效解决方案吗?