为什么python要重新映射我的属性名?

Why does Python remap my attribute name?

本问题已经有最佳答案,请猛点这里访问。

如果我用python运行这个

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Boo(object):
    def __init__(self, x):
        self._x = x
        self.__bingo = 3
        self._info = {'x': x, 'y':42}
    def __dir__(self):
        return ['x']
    @property
    def x(self):
        return self._x
    @property
    def z(self):
        return self._x+1
    def __getattr__(self, key):
        return self._info[key]

b = Boo(44)
b.__dict__.keys()

然后它打印出来

1
['_info', '_Boo__bingo', '_x']

为什么更名为__bingo?是否保留双下划线属性?


它与损坏有关,这是Python的解释器所做的。这是一篇关于它的文章。

https://shahriar.svbtle.com/underlines-in-python