Python是面向對象(OOP)的語言, 而且在OOP這條路上比Java走得更徹底, 因為在Python里, 一切皆對象, 包括int, float等基本數據類型.
在Java里, 若要為一個類定義只讀的屬性, 只需要將目標屬性用private修飾, 然后只提供getter()而不提供setter(). 但Python沒有private關鍵字, 如何定義只讀屬性呢? 有兩種方法, 第一種跟Java類似, 通過定義私有屬性實現. 第二種是通過__ setattr__.
通過私有屬性
用私有屬性+@property定義只讀屬性, 需要預先定義好屬性名, 然后實現對應的getter方法.,如果對屬性還不懂。
輸出:
可以看出, 屬性x是可讀但不可寫的.
通過 __ setattr__當我們調用obj.attr=value時發生了什么?
很簡單, 調用了obj的__ setattr__方法. 可通過以下代碼驗證:
輸出:
所以呢, 只需要在__ setattr__ 方法里擋一下, 就可以阻止屬性值的設置, 可謂是釜底抽薪.
代碼:
輸出:
-
JAVA
+關注
關注
19文章
2977瀏覽量
105227 -
python
+關注
關注
56文章
4811瀏覽量
85080
發布評論請先 登錄
相關推薦
評論