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

标签 python inheritance elementtree

我尝试定义一个继承 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/

相关文章:

python - 创建对变量的引用(类似于PHP的 "=&")?

python - 如何在 while 循环中连续检查小时数?

python - 检查文本文件中是否存在字符串

c# - 为什么 child 不能覆盖其 parent 的事件订阅?

python - 使用 Etree 和 Python 编辑 XML

python - XML 解析问题,某些孟加拉语字符在 Python ElementTree 中显示 ParseError

python - Pandas merge 每次合并时除以一个值

javascript - 这两种继承策略有什么区别呢?

c++ - 如何在 C++ 中正确访问继承的方法和构造函数?

xml - Pyspark:hdfs 中没有这样的文件或目录