如何在python中继承ElementTree.Element类? [英] How to inherit ElementTree.Element class in python?

查看:120
本文介绍了如何在python中继承ElementTree.Element类?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆