有什麼辦法,使在課堂上某些變量「私有」(或任何self.__var
真的是),但可以訪問到另一個類,類似於C++的朋友,除了蟒蛇?我不希望任何一個類中的變量都與之混淆。我也不想複製整個代碼並將其轉換爲第二類。「朋友」荷蘭國際集團班蟒蛇
回答
沒有,沒有這樣的選擇。
與單下劃線開始,並告訴其他人你的項目工作,別傻了關於他們訪問哪些使用的名稱。
我不知道你在說什麼。
>>> class Foo(object):
... __bar = 42
...
>>> class Quux(object):
... def spam(self):
... print Foo._Foo__bar
...
>>> q = Quux()
>>> q.spam()
42
'回溯(最近通話最後一個): 文件 「
嘗試'dir(Foo)'來查看你的Python版本是如何破壞它的。 – 2011-06-14 04:00:54
哎呦。好吧你是對的。但是,請嘗試:'Foo(object): \t def __init __(self): \t self .__ bar = 42' – calccrypto 2011-06-14 04:03:43
Python的哲學是,訪問控制等問題取決於程序員的紀律。它不會試圖用程序的哪些部分是內部實現細節的語言進行編碼,哪些是文檔化界面的一部分。因此,它不需要構造如friend
來試圖聲明程序的哪些其他部分是類的實現的一部分,哪些僅僅是客戶端。
的想法是,如果你不能寫/設計/文檔/使用良好的代碼,而無需編碼部分這些概念到你的程序,你可能在你要麼編碼它們不能做到這一點。因此,最好不要在語言中使用這種結構,因爲它們不會增加語言的表達能力,偶爾也會妨礙語言的表達。
- 1. 推(荷蘭國際集團)的循環
- 2. 錯誤而異荷蘭國際集團C++
- 3. 錯誤荷蘭國際集團* ngFor環路Angular2
- 4. 的SyntaxError而EVAL()'荷蘭國際集團的對象
- 5. 「vstack」荷蘭國際集團在3D numpy的ndarray
- 6. 的typedef荷蘭國際集團不存在的結構在C
- 7. 像查詢荷蘭國際集團LINQ到對象
- 8. grep命令在「荷蘭國際集團」逗號
- 9. #進口(荷蘭國際集團)非頭文件
- 10. 拼合遞歸陣列「 untree」'荷蘭國際集團
- 11. 什麼是M-X編譯「荷蘭國際集團
- 12. 問題AJAX(荷蘭國際集團)JSON在Mac上的Firefox版本對象(3.6.12)
- 13. 「未綁定類型構造_no_unused_value_warning」(僅當#使用荷蘭國際集團文件)
- 14. grep的後面添加文字:荷蘭國際集團說句話BASH
- 15. 綁定() - 荷蘭國際集團UDP套接字到不同的地址
- 16. node.js中 - 找到)的要求路徑(荷蘭國際集團模塊
- 17. 隨機()函數相同的值(而格羅夫荷蘭國際集團)
- 18. 的#include(荷蘭國際集團)的文件,用現在的錯誤類型C++
- 19. 碼頭工人無法啓動荷蘭國際集團退出紅寶石
- 20. 爲什麼我coditional回聲荷蘭國際集團的錯誤的事情
- 21. 改變nextchar超時時「中選擇」荷蘭國際集團的選項
- 22. 集團蟒蛇元組
- 23. 荷蘭國旗排序
- 24. 蟒蛇或C的國際象棋
- 25. FQL朋友團體
- 26. 爲什麼不能「\ B \ w +(?=荷蘭國際集團)\ B」匹配「我唱歌,當你跳舞」
- 27. 在ALTER荷蘭國際集團表ADD()的作品,而不是在MySQL中修改
- 28. Perl腳本不能發送郵件,而不是取消鏈接 - 荷蘭國際集團
- 29. 獲得「重複接口定義」的錯誤,肯定要#IMPORT荷蘭國際集團的頭文件
- 30. 檢測未能找到程序時叉() - 荷蘭國際集團網HRS歐洲POPEN
雙下劃線前綴與「隱私」無關。 name mangling是爲了避免子類中內部實例變量的名稱衝突,而不是阻止訪問。 – detly 2011-06-14 05:03:46