當我創建了一個模塊級變量__
並嘗試在類的一個方法內使用(使用global
關鍵字)訪問它時,名稱發生了變形。Python全局變量__
讓我給個例子:
__test = 'asd' # module level variable with __
class TestClass(object):
def test(self):
global __test
print(__test) # trying to access this variable
a = TestClass()
a.test()
解釋引發的錯誤:
NameError: name '_TestClass__test' is not defined
所以我們可以看到它試圖名稱碾壓__test
到_TestClass__test
。
我認爲name-mangling應該只用於類變量(當我用self
或類名訪問它們時)。
它是一個我沒有意識到的明確定義的行爲,還是某種Python錯誤?
我測試的CPython 3.5
爲什麼要創建*。* 「用'__'一個模塊級變量」? – jonrsharpe
特別注意,引用文檔*「這個修改不考慮標識符的語法位置」* – jonrsharpe
其實我的一個學生(我在一些初級水平上教Python)做到了這一點,我不知道爲什麼它沒有爲他工作。 – Pax0r