0
如果我在Python爲什麼Python重新映射我的屬性名稱?
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()
運行此則打印
['_info', '_Boo__bingo', '_x']
爲什麼__bingo
獲得改名?雙下劃線屬性是否保留?
因爲這正是您告訴Python要做的*。你從哪裏得到使用雙下劃線的想法?你是否偶然發現了這種行爲?或者你是否遵循了一些教程,告訴你雙下劃線是「私人的」? –
我沒有問題,這被標記爲重複,但[鏈接的問題](https://stackoverflow.com/questions/7456807/python-name-mangling)只與這個問題相切。有[回答這個問題](https://stackoverflow.com/a/34903236/44330)確實回答我的問題。 –
@ juanpa.arrivillaga我偶然發現了這種行爲,並想知道爲什麼,這正是我的問題所說的。 (順便說一下,你的評論有點傲慢。) –