Python是面向對象(OOP)的語言, 而且在OOP這條路上比Java走得更徹底, 因為在Python里, 一切皆對象, 包括int, float等基本數據類型.
在Java里, 若要為一個類定義只讀的屬性, 只需要將目標屬性用private修飾, 然后只提供getter()而不提供setter(). 但Python沒有private關鍵字, 如何定義只讀屬性呢? 有兩種方法, 第一種跟Java類似, 通過定義私有屬性實現. 第二種是通過__ setattr__.
通過私有屬性
用私有屬性+@property定義只讀屬性, 需要預先定義好屬性名, 然后實現對應的getter方法.,如果對屬性還不懂。
輸出:
可以看出, 屬性x是可讀但不可寫的.
通過 __ setattr__當我們調用obj.attr=value時發(fā)生了什么?
很簡單, 調用了obj的__ setattr__方法. 可通過以下代碼驗證:
輸出:
所以呢, 只需要在__ setattr__ 方法里擋一下, 就可以阻止屬性值的設置, 可謂是釜底抽薪.
代碼:
輸出:
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。
舉報投訴
-
JAVA
+關注
關注
20文章
3012瀏覽量
116874 -
python
+關注
關注
58文章
4889瀏覽量
90330
發(fā)布評論請先 登錄
相關推薦
熱點推薦
自定義卡片編輯組件
自定義卡片編輯頁面從左到右分為功能區(qū)、預覽畫布區(qū)和屬性配置區(qū)。
開發(fā)者可以拖動左邊組件圖標到中間畫布區(qū)域,選中中間畫布上某個組件時,右邊會展示該組件的屬性配置,修改屬性配置可以實時在
發(fā)表于 04-22 11:11
使用Python/MyHDL創(chuàng)建自定義FPGA IP
使用 Python/MyHDL 創(chuàng)建自定義 FPGA IP,與 Vivado 集成,并通過 PYNQ 進行控制——實現軟件上的簡單硬件設計。
使用PYTHON進行的跨平臺仿真
快速物理光學軟件VirtualLab Fusion以其“連接場求解器”方法而自豪,該方法將應用于不同組件上的專用電磁場求解器結合在一起,以實現整個系統的物理光學模擬。這種方法的邏輯擴展不僅是連接軟件
發(fā)表于 04-02 08:21
[VirtualLab] 使用Python運行VirtualLab Fusion光學仿真
Python編輯器的用戶:
請安裝保存在文件requirements.txt中的所有軟件包。最常見的方法之一是pip安裝:
pip install -r requirements.txt
配置路徑
在VirtualLab Fusion中
發(fā)表于 03-31 09:39
[VirtualLab] 使用Python進行跨平臺參數掃描
**
準備Python
**配置路徑
**
**在VirtualLab Fusion中定義一個光學設置
**
**保存光學設置并導出參數到一個XML文件
**
**運行模擬
**
參數掃描——改變單個參數
發(fā)表于 03-31 09:36
磁編碼器接口定義及標準接線方法
、接線規(guī)范統一,是保證磁編碼器穩(wěn)定輸出位置信號、提高系統抗干擾能力的關鍵。本文從接口類型、電氣特性、引腳定義、標準接線、工程規(guī)范、故障處理六個方面,系統闡述磁編碼器接口定義與標準接線方法,為工程設計、現場安裝與調試提供完整技術依
探索Atmel AT27LV010A:低功耗只讀存儲器的卓越之選
探索Atmel AT27LV010A:低功耗只讀存儲器的卓越之選 在電子設計的廣闊領域中,尋找一款高性能、低功耗的只讀存儲器(ROM)至關重要。Atmel AT27LV010A就是這樣一款引人注目
沒有專利的opencv-python 版本
所有 官方發(fā)布的 opencv-python 核心版本(無 contrib 擴展)都無專利風險——專利問題僅存在于 opencv-contrib-python 擴展模塊中的少數算法(如早期 SIFT
發(fā)表于 12-13 12:37
堆棧的定義,堆棧的使用方法
堆棧的定義
堆棧也是用戶使用的存儲器的一部分,用于存放臨時性的數據和一些其他信息。堆棧段的定義語法如下:
堆棧名SEGMENTSTACK
(堆棧內容)
堆棧名ENDS
語法解釋:
堆棧
發(fā)表于 11-21 06:49
Python調用API教程
兩個不同系統之間的信息交互。在這篇文章中,我們將詳細介紹Python調用API的方法和技巧。 一、用Requests庫發(fā)送HTTP請求 使用Python調用API的第一步是發(fā)送HTTP請求,通常
如何將設USB存儲設備設為只讀?
rt thread 設USB存儲設備設為只讀的方法,已經嘗試了:
1、rt_device_register((rt_device_t)&_stm_udc, \"usbd
發(fā)表于 09-17 07:21
termux如何搭建python游戲
termux如何搭建python游戲
Termux搭建Python游戲開發(fā)環(huán)境的完整指南
一、Termux基礎環(huán)境準備
Termux是一款無需root即可在安卓設備上運行的Linux終端
發(fā)表于 08-29 07:06
在Python中字符串逆序有幾種方式,代碼是什么
對于一個給定的字符串,逆序輸出,這個任務對于python來說是一種很簡單的操作,畢竟強大的列表和字符串處理的一些列函數足以應付這些問題 了,今天總結了一下python中對于字符串的逆序輸出的幾種常用
python app不能運行怎么解決?
;python_agent[1241]: xmlrpc request method supervisor.stopProcess failed;python_agent[1241]: xmlrpc request method supervisor.stopProces
發(fā)表于 08-06 06:27
Python的只讀屬性定義方法
評論