2016-09-11 3 views
1

ElementElementTree 클래스의 기능을 xml.etree에서 확장하고 xml.etree.ElementTree.parse()과 함께 사용하고 싶습니다.Element 및 ElementTree의 기능 확장

몇 번 시도해 본 후에도 문제를 해결할 수있는 솔루션을 만들었지 만 더 나은 솔루션이 있는지 또는이 솔루션에 숨겨진 위험이 있는지 알고 싶습니다.

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 FooElementTree 
>>> e = FooElementTree.parse('xml.cfg') 
>>> e 
<FooElementTree.FooElementTree object at 0x023AB650> 
>>> r = e.getroot() 
>>> r 
<FooElement 'configuration' at 0x23c5470> 

답변

0

이 길, 핫 패치 작품이다. 그러나 ElementTree를 사용하는 다른 모듈 (또는 Submodule)을 가져 오기 전에 패치를 적용해야한다는 점에 유의하십시오.