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。
是否可以配置 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。