PyCharm和调试私有属性

时间:2014-12-17 23:41:37

标签: python pycharm

我使用PyCharm Community Edition 3.4。

我已将self.__a添加到手表。

这是我的例子:

class Box:
    def __init__(self, a, b, c):
        self.__a = a
        self._b  = b
        self.c   = c
        d = 0 #Breakpoint.


a = Box(1, 2, 3)

所以,我开始调试并在断点处停止。 self.__a观看会显示{AttributeError}'Box' object has no attribute 'a'.

我按 Alt + F8 并评估self.__a = a。结果是None

然后我评估self.__a,结果为1

我对self.__a的监视仍显示{AttributeError}'Box' object has no attribute 'a'。我删除它。然后我添加另一个手表self.__a。它显示1

你能澄清一下这里发生了什么吗?

1 个答案:

答案 0 :(得分:5)

这是因为box没有__a

它的名字被破坏了......

另见:Name_mangling#Python

它变成了

Box._Box__a

如果您将其更改为观看

self._Box__a 

它会显示正确的值

但它也应该出现在变量列表视图中(在调试运行面板的中央)