2016-09-11 10 views
1

Я хотел бы расширить функциональность Element и ElementTree классов от 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

Это путь, горячие Patching работы. Но имейте в виду, что патч должен применяться до того, как будет импортирован любой другой модуль (или субмодуль), который также использует ElementTree.

 Смежные вопросы

  • Нет связанных вопросов^_^