我正在尝试将属性注入lxml.etree._Element
,但由于该模块完全用 C 实现,因此setattr
失败:
Traceback (most recent call last):
[...]
setattr(node.getroottree().getroot(), "attributeName", value)
AttributeError: 'lxml.etree._Element' object has no attribute 'attributeName'
用例:我有一个函数,它通过 XPath 从 XML 文件中提取文本,并用$(ENV)
相应的值替换类似的匹配项。因此,我不想每次都传递变量字典(例如{"ENV" : "replacement"}
,每次都传递给该函数。相反,在固定位置(我的代码中的 XML 根)拥有一个属性会更容易。我可以做一个愚蠢的解决方法,但是注入 Python 属性是最好的方法。我不能使用全局变量,因为每个 XML 文件可以有不同的变量值。
那么,有什么方法可以将某些东西注入基于 C 的类/对象中?