【发布时间】: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