我尝试定义一个继承 ElementTree.Element 的 NewElement 类。目标是添加更多方法,例如foo1(), foo2(), 到它。
定义新元素类: 将 xml.etree.ElementTree 作为 ET 导入
class NewElement(ET.Element):
def __init__(self):
# Q1: how to init ET.Element? refer to ET's refer guide - http://docs.python.org/2/library/xml.etree.elementtree.html#xml.etree.ElementTree.SubElement
pass
def foo1(self):
# do something on Element
return self
def foo2(self):
# do something else on Element
return self
想这样使用NewElement:
a_element = ET.fromstring(xmlstring) # Q2: how to generate a NewElement object instead of ET.Element one
a_element.foo1().foo2() # this is my goal to easier use foo1, foo2 functions
问题是
Q1 - 如何初始化 NewElement 的父元素? ET 的引用指南说 ET.Element 可以初始化,但似乎只有元素本身没有 child 。
Q2 - 其他 ET 的类/函数返回 Element,但我期望 NewElement。我需要全部更改吗?
我的方向正确吗?或者改用多重继承?还是使用mixin?如何? ...
感谢您的宝贵意见。
最佳答案
没有必要这样做。只需制作 foo1
foo2
模块级 函数,它接受 Element
的实例并返回实例:
foo2(foo1(a_element))
关于python - python中如何继承ElementTree.Element类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22243529/