可能重複屬性:
What is the benefit of private name mangling in Python?意義和使用實例/類領先的雙下劃線(特殊行爲)
當我和蟒蛇玩,我發現,如果class
或instance
變量名以2個下劃線開始,它們將被重命名以便以'_'開頭。
如
class Test(object):
__attribute = "dunderscored"
def __init__(self, value=0):
self.__instance_attribute = value
test_instance = Test()
那麼這兩個變量將被重新命名爲
test_instance._Test__attribute
和test_instance._Test__instance_attribute
爲什麼會出現這樣的行爲/功能?這是否有任何需要,或者是否有任何特殊用途?
我可以想到一個用例,當不同的類有一個屬性與通用名稱,例如。值,ID,成員是共同的,但對於某些函數/方法,我們期待/假定只有這些類中的一個。在這種情況下,有可能類型檢查沒有完成,並且另一個類實例被傳遞給它(可能是錯誤的)可能會導致錯誤和/或不良行爲。
但除了這個用例,我沒有看到這種特殊行爲的任何好處。行爲看起來像一個功能,非常基本,我覺得我在這裏失去了一些東西。如果這是一個功能它有什麼用處?任何典型的用例?
我沒有在這裏看到子類(除了'object')... – glglgl
@glglgl - 德哦 - 謝謝。固定。 – mgilson