当子类化 str 时在 PyCharm 调试器中显示类属性

Lom*_*rur 5 python debugging pycharm

我想str在调试器中查看 的子类的类属性。

示例图像

请参阅图片 - 我想要在旁边有下拉箭头a(这是一个POSString对象)。换句话说,在 Pycharm 调试器中,我希望能够选择双击并查看带有 value 的a属性,就像对象一样。bar"HELLO"foo

这在 PyCharm 中可能吗?如果可以,如何实现?

两个类:

class Foo:
    bar = "HELLO"


class POSString(str):
    bar = "HELLO"

    def __init__(self, pos="", *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.pos = pos

    def __hash__(self):
        return hash((str(self), self.pos))

    def __eq__(self, other):
        return super().__eq__(other) and self.pos == other.pos
Run Code Online (Sandbox Code Playgroud)

以及我如何创建我的两个对象:

foo = Foo()
a = POSString("banana")
Run Code Online (Sandbox Code Playgroud)

我正在使用Python 3.7.1。

PyCharm:

PyCharm 2018.2.5 (Professional Edition)
Build #PY-182.5107.22, built on November 13, 2018
JRE: 1.8.0_152-release-1248-b22 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Linux 4.15.0-43-generic
Run Code Online (Sandbox Code Playgroud)

bad*_*der 5

PyCharm 目前没有设置来配置调试工具窗口的变量选项卡中显示该详细信息。IDE 根据对象的类型自动做出大部分显示决策。当前唯一可用的选项是使用设置在单个变量内对值进行排序File > Settings > Build, Execution, Deployment > Debugger > Data Views > Sort values alphabetically。(有关更详细的解释,请参阅这篇文章)。

这对于调试来说可能不方便,class问题中的示例显示得与字符串完全相同,因为该类继承自 string。这是 IDE 的决定,目前无法更改它(除了向JetBrains发布功能请求之外)。

替代方法是在“变量”选项卡中设置“监视”或使用控制台。另一个更不方便的选择是将类本身更改为不从字符串继承(在这种情况下,它将像常规类一样显示),但是这可能会破坏代码中的任意数量的功能,因此所获得的调试便利性可能会被造成的不便。