如何在python中继承ElementTree.Element类?

时间:2014-03-07 06:52:48

标签: python inheritance elementtree

我尝试定义一个继承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?怎么样? ...

感谢您提供了很好的投入。

1 个答案:

答案 0 :(得分:1)

没有必要这样做。只需创建接受foo1实例的foo2 Element 模块级函数并返回实例:

foo2(foo1(a_element))