Pycharm: 如何为外部对象类型设置自定义字符串函数(即Type Renderer)?

Pycharm: how to set a custom string function (ie Type Renderer) for external object types?

是否可以配置 PyCharm 以使用自定义函数在调试会话中显示类型的 __str__ 表示?我指的是内置类型或从第三方库导入的类型,我不想修改它们。

例如,我希望得到 etree.tostring(element).

的输出,而不是像 {lxml.html.HtmlElement} <Element tr at 0x10e2c1418> 这样的调试器中的字符串

Intellij Idea 有 Java Type Renderers,您可以在其中为任何类型设置自定义 toString() 方法,以便在调试期间这些类型将使用您的自定义 toString()渲染器。 PyCharm 中是否提供或可实现类似的功能?

我试过这种方法:

# for lxml.html

lxml.html.HtmlElement.__str__ = lxml.html.etree.tostring

这给出了 lxml.html 的预期结果,但感觉这是一个丑陋的解决方法,我想找到一种不需要 monkey-patching 外部库的方法。

这种方法的缺点是它不适用于 lxml.etree.Element,因为设置 lxml.etree.Element.__str__ = lxml.etree.tostring 没有效果,因为它委托给 lxml.etree._Element 这是 C 原生模块使用只读 __str__.

Python没有这样的功能,请在 PyCharms 的错误跟踪器中投票给相应的票:PY-21984