我尝试定义一个继承ElementTree.Element的NewElement类。目标是增加一些方法,例如foo1(),foo2(),它。
定义NewElement类: 将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的参考指南saide ET.Element可以初始化,但似乎只有元素本身没有孩子。
Q2 - 其他ET的类/函数返回Element,但我期待NewElement。我需要改变所有这些吗?
我是否朝正确的方向努力达到目标?或者使用多重继承?还是用mixin?怎么样? ...
感谢您提供了很好的投入。
答案 0 :(得分:1)
没有必要这样做。只需创建接受foo1
实例的foo2
Element
模块级函数并返回实例:
foo2(foo1(a_element))