如何在python中继承ElementTree.Element类? [英] How to inherit ElementTree.Element class in python?
问题描述
我尝试定义一个继承ElementTree.Element的NewElement类。目标是添加更多方法,例如foo1(),foo2()。
I try to define a NewElement class, which inherit ElementTree.Element. The goal is adding a few more methods, e.g. foo1(), foo2(), to it.
定义NewElement类:
将xml.etree.ElementTree导入为ET
Define NewElement class: 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
问题是
第一季度-如何初始化NewElement的父节点? ET的参考指南saide ET.Element可以初始化,但似乎只有元素本身没有孩子。
Q1 - how to init NewElement's parent? the ET's reference guide saide ET.Element can be initialized but it seems only the element itself without children.
第二季度-其他ET的类/功能返回Element,但是我希望是NewElement。我是否需要全部更改?
Q2 - other ET's class/function returns Element, but I expect NewElement. Do I need change all of them?
我是否在正确的方向上实现目标?还是改用多重继承?还是使用mixin?怎么样? ...
Do I on the right direction to reach my goal? Or use multiple inheritance instead? Or use mixin? How? ...
感谢您的宝贵意见。
推荐答案
没必要这样做。只需制作 foo1
foo2
模块级别函数即可,这些函数接受的实例元素
并返回实例:
It's unnecessary to do so. Simply make foo1
foo2
module level functions which accept instances of Element
and return the instances:
foo2(foo1(a_element))
这篇关于如何在python中继承ElementTree.Element类?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!