子类化str时,在Pycharm调试器中显示类属性

时间:2019-01-24 09:43:41

标签: python pycharm

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

请参阅图片-我想在a(这是POSString对象)旁边放置一个下拉箭头。换句话说,在Pycharm调试器中,我希望可以选择双击a并看到具有值bar的属性"HELLO",就像foo对象一样。 / p>

在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

以及如何创建两个对象:

foo = Foo()
a = POSString("banana")

我正在使用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

1 个答案:

答案 0 :(得分:0)

PyCharm 当前没有配置在调试工具窗口的 Variables Tab 中显示该详细信息的设置。 IDE 会根据对象的类型自动做出大多数显示决策。当前唯一可用的选项是使用 File > Settings > Build, Execution, Deployment > {{1} } Debugger > Data Views >。 (有关更详细的说明,请参阅 this post)。

这对于调试来说可能不方便,问题中的示例 Sort values alphabetically 显示完全像一个字符串,因为该类继承自字符串。这是 IDE 的决定,目前无法更改(除了使用 JetBrains 发布功能请求)。

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