【问题标题】:decorate lxml.etree._Element methods装饰 lxml.etree._Element 方法
【发布时间】:2012-07-22 13:57:33
【问题描述】:

我尝试装饰/覆盖/修补 'get''text''findtext' 方法lxml.etree._Element, 但似乎不可能实现,因为所有属性都是只读的,可能是因为它不是用python编写的。有没有办法装饰这些方法? 感谢您的任何建议..

【问题讨论】:

  • 您的目标到底是什么?为什么要装饰那些方法?
  • lxml 到处都返回 unicode 字符串,我想用我的 to_str 函数包装这些方法,所以我会得到正常的字符串。我在代码中多次调用它们,所以我不想手动将其包装在任何地方,而是将其装饰为源方法。
  • 我建议在任何地方都使用 unicode 字符串,并且仅在输出时编码为特定字符集。使用 Unicode 保存程序的内部结构可以避免很多麻烦(我的姓氏中有一个非 ASCII 字符,我经常会想起字符集的问题)。
  • 实际上 lxml 返回“智能字符串”,这是一个 unicode 子类,似乎在我的代码中绊倒了 sqlalchemy 的编码尝试,所以我可以很好地理解 OP 的需求。不过,我没有一个像样的解决方案......

标签: python methods decorator lxml patch


【解决方案1】:

读完cmets后,听了建议到处使用unicode,输出数据时才编码成字符串。谢谢你,但是无论如何我都很好奇完成我想要的任务,所以这就是我想出的,一个 lxml._Element 类包装器:

https://github.com/integricho/lxmlproxy

也许别人会觉得它对某些东西有用,因为我没有找到其他正统的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2013-03-16
    • 2011-03-25
    • 2020-01-11
    • 1970-01-01
    • 2014-01-14
    • 1970-01-01
    相关资源
    最近更新 更多