我在python 3.5.1的環境下做了一個簡單的測試,想要做到類似其他程式語言中
"private"的功能:
test.py
1 class StateMachine:
2 def __init__(self):
3 self.__state = "IDLE"
4
5 def state(self):
6 return (self.__state)
7
8 sm = StateMachine()
9 print(sm.state())
10 sm.__state = "MOV"
11 print(sm.state())
輸出結果如下:
c:\python test.py
IDLE
IDLE
---
因為__state是被隱藏的,我原本預期在第10行去對__state賦值會出錯,但意外的在沒
回報任何問題的情況下執行結束,雖然__state的內容沒被改變依然沒違反原本的用意
,但我很好奇為什麼對一個被隱藏起來(看不見)的屬性賦值可以被通過呢?這樣會不會
很容易在寫code的時候發生以為值有寫進去、但實際上因為目標是被隱藏起來的屬性而
值根本沒改變的狀況呢?
順帶一提如果第10行改為:
print(sm.__state)
在執行階段報錯,這應該可以表示__state有確實的被隱藏起來。
最近剛開始一邊查資料一邊學python,如果問了蠢問題還請見諒。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 211.72.212.239
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1476412734.A.46D.html
推
10/14 11:11, , 1F
10/14 11:11, 1F
→
10/14 11:11, , 2F
10/14 11:11, 2F
→
10/14 11:12, , 3F
10/14 11:12, 3F
→
10/14 11:12, , 4F
10/14 11:12, 4F
→
10/14 11:13, , 5F
10/14 11:13, 5F
→
10/14 11:34, , 6F
10/14 11:34, 6F
→
10/14 11:35, , 7F
10/14 11:35, 7F
→
10/14 11:35, , 8F
10/14 11:35, 8F
→
10/14 11:40, , 9F
10/14 11:40, 9F
→
10/14 11:40, , 10F
10/14 11:40, 10F
推
10/15 10:52, , 11F
10/15 10:52, 11F
→
10/15 10:52, , 12F
10/15 10:52, 12F
→
10/15 10:52, , 13F
10/15 10:52, 13F
→
10/15 10:53, , 14F
10/15 10:53, 14F
→
10/15 10:54, , 15F
10/15 10:54, 15F
討論串 (同標題文章)