gpt4 book ai didi

python - 为什么Python的lxml.etree.SubElement是类方法而不是实例方法?

转载 作者:行者123 更新时间:2023-11-30 23:20:51 25 4
gpt4 key购买 nike

为了向现有元素添加新的子元素,我必须调用类方法,并将父元素作为参数。我希望子元素的创建是即将成为父元素的实例方法,并将子元素(来自 Element 构造函数)作为唯一的形式参数。

实际:

#!/usr/bin/python
from lxml import etree
root = etree.Element("parent")
childNode = etree.SubElement(root, "child")

预期(想象):

#!/usr/bin/python
from lxml import etree
root = etree.Element("parent")
childNode = root.AddSubElement(etree.Element("child"))

这是 lxml 设计者的决定,还是 lxml 设计的其他部分施加的约束,或者“更 Pythonic”,还是什么?

最佳答案

您可以这样做,但这样做的方法称为 append,而不是 AddSubElement:

childNode = root.append(etree.Element("child"))

lxml tutorial说“这很常见,所以有一种更短、更有效的方法来做到这一点:子元素工厂”。然而,它给出的使用 SubElement 的示例实际上比使用 append 的示例稍长,并且它没有解释它如何更有效,所以我承认我是不明白为什么这么说。您可以使用您更喜欢的语法。

看起来真正更短的方法是允许您按元素名称追加而不是手动创建 Element 对象的方法(例如,root.addChild("child"))。我不知道为什么没有这样的方法,但我相信其他一些 XML 库也有类似的方法。

关于python - 为什么Python的lxml.etree.SubElement是类方法而不是实例方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25223056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com