如何在Python中继承ElementTree.Element类?
我想定义一个叫做 NewElement 的类,这个类是从 ElementTree.Element 继承来的。我的目标是给它添加一些额外的方法,比如 foo1() 和 foo2()。
定义 NewElement 类: import xml.etree.ElementTree as 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
这里有几个问题
问题1 - 如何初始化 NewElement 的父类?ET 的参考指南说 ET.Element 可以被初始化,但似乎只能初始化元素本身,而没有子元素。
问题2 - 其他 ET 的类或函数返回的是 Element,但我希望返回 NewElement。我需要把所有的都改成 NewElement 吗?
我这样做是否正确?还是应该使用多重继承?或者使用混入?怎么做呢?...
谢谢你的宝贵意见。
1 个回答
0
这样做其实没必要。只需要把 foo1
和 foo2
这两个函数定义为模块级别的函数,也就是说它们可以在模块的任何地方被调用。然后让这两个函数接受 Element
的实例,并返回这些实例就可以了。
foo2(foo1(a_element))