91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

Python的只讀屬性定義方法

汽車玩家 ? 來源:今日頭條 ? 作者:我愛學Python ? 2020-01-18 09:48 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Python是面向對象(OOP)的語言, 而且在OOP這條路上比Java走得更徹底, 因為在Python里, 一切皆對象, 包括int, float等基本數(shù)據(jù)類型.

在Java里, 若要為一個類定義只讀的屬性, 只需要將目標屬性用private修飾, 然后只提供getter()而不提供setter(). 但Python沒有private關鍵字, 如何定義只讀屬性呢? 有兩種方法, 第一種跟Java類似, 通過定義私有屬性實現(xiàn). 第二種是通過__ setattr__.

通過私有屬性

用私有屬性+@property定義只讀屬性, 需要預先定義好屬性名, 然后實現(xiàn)對應的getter方法.,如果對屬性還不懂。

輸出:

可以看出, 屬性x是可讀但不可寫的.

通過 __ setattr__當我們調(diào)用obj.attr=value時發(fā)生了什么?

很簡單, 調(diào)用了obj的__ setattr__方法. 可通過以下代碼驗證:

輸出:

所以呢, 只需要在__ setattr__ 方法里擋一下, 就可以阻止屬性值的設置, 可謂是釜底抽薪.

代碼:

輸出:

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • JAVA
    +關注

    關注

    20

    文章

    3002

    瀏覽量

    116457
  • python
    +關注

    關注

    57

    文章

    4877

    瀏覽量

    90078
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    無法去除 Python VisionFive.i2c 庫的終端輸出?

    方法,終端都會輸出 “i2c_dev: /dev/i2c-0” 這樣的字段 這個字段既不是 stderr 也不是 stdout,完全去不掉 因為用的 Python 的 curses 庫設計的交互界面
    發(fā)表于 02-25 06:13

    探索Atmel AT27LV010A:低功耗只讀存儲器的卓越之選

    探索Atmel AT27LV010A:低功耗只讀存儲器的卓越之選 在電子設計的廣闊領域中,尋找一款高性能、低功耗的只讀存儲器(ROM)至關重要。Atmel AT27LV010A就是這樣一款引人注目
    的頭像 發(fā)表于 01-31 17:05 ?696次閱讀

    TI 23 - mm 低頻玻璃封裝只讀應答器:TRPGR30ATGA 深度解析

    TI 23 - mm 低頻玻璃封裝只讀應答器:TRPGR30ATGA 深度解析 在電子設計領域,低頻應答器是車輛識別、資產(chǎn)追蹤等應用的重要組件。今天,我們將深入剖析德州儀器(TI)的 23 - mm
    的頭像 發(fā)表于 01-05 16:50 ?241次閱讀

    沒有專利的opencv-python 版本

    所有 官方發(fā)布的 opencv-python 核心版本(無 contrib 擴展)都無專利風險——專利問題僅存在于 opencv-contrib-python 擴展模塊中的少數(shù)算法(如早期 SIFT
    發(fā)表于 12-13 12:37

    堆棧的定義,堆棧的使用方法

    堆棧的定義 堆棧也是用戶使用的存儲器的一部分,用于存放臨時性的數(shù)據(jù)和一些其他信息。堆棧段的定義語法如下: 堆棧名SEGMENTSTACK (堆棧內(nèi)容) 堆棧名ENDS 語法解釋: 堆棧
    發(fā)表于 11-21 06:49

    Python調(diào)用API教程

    兩個不同系統(tǒng)之間的信息交互。在這篇文章中,我們將詳細介紹Python調(diào)用API的方法和技巧。 一、用Requests庫發(fā)送HTTP請求 使用Python調(diào)用API的第一步是發(fā)送HTTP請求,通常
    的頭像 發(fā)表于 11-03 09:15 ?900次閱讀

    商品類目屬性查詢接口技術實現(xiàn)詳解

    ? ? 一、接口核心功能 該接口用于查詢電商系統(tǒng)中商品類目的屬性信息,支持: 按類目ID查詢屬性集合 按屬性類型過濾(關鍵屬性$K$、銷售屬性
    的頭像 發(fā)表于 10-11 15:43 ?465次閱讀
    商品類目<b class='flag-5'>屬性</b>查詢接口技術實現(xiàn)詳解

    如何將設USB存儲設備設為只讀

    rt thread 設USB存儲設備設為只讀方法,已經(jīng)嘗試了: 1、rt_device_register((rt_device_t)&_stm_udc, \"usbd
    發(fā)表于 09-17 07:21

    termux調(diào)試python猜數(shù)字游戲

    用termux做一個猜數(shù)字游戲 下面是在Termux中創(chuàng)建猜數(shù)字游戲的步驟及完整實現(xiàn)方案,結合Python實現(xiàn)(最適配Termux環(huán)境): ? 一、環(huán)境準備(Termux基礎配置) 1.
    發(fā)表于 08-29 17:15

    termux如何搭建python游戲

    termux如何搭建python游戲 Termux搭建Python游戲開發(fā)環(huán)境的完整指南 一、Termux基礎環(huán)境準備 Termux是一款無需root即可在安卓設備上運行的Linux終端
    發(fā)表于 08-29 07:06

    Python中字符串逆序有幾種方式,代碼是什么

    對于一個給定的字符串,逆序輸出,這個任務對于python來說是一種很簡單的操作,畢竟強大的列表和字符串處理的一些列函數(shù)足以應付這些問題 了,今天總結了一下python中對于字符串的逆序輸出的幾種常用
    的頭像 發(fā)表于 08-28 14:44 ?1099次閱讀

    python app不能運行怎么解決?

    ;python_agent[1241]: xmlrpc request method supervisor.stopProcess failed;python_agent[1241]: xmlrpc request method supervisor.stopProces
    發(fā)表于 08-06 06:27

    Micro OLED 陽極像素定義層制備方法及白光干涉儀在光刻圖形的測量

    優(yōu)勢,為光刻圖形測量提供了可靠手段。 ? Micro OLED 陽極像素定義層制備方法 ? 傳統(tǒng)光刻工藝 ? 傳統(tǒng) Micro OLED 陽極像素定義層制備常采用光刻剝離工藝。首先在基板上沉積金屬層作為陽極材料,接著旋涂光刻膠,
    的頭像 發(fā)表于 05-23 09:39 ?774次閱讀
    Micro OLED 陽極像素<b class='flag-5'>定義</b>層制備<b class='flag-5'>方法</b>及白光干涉儀在光刻圖形的測量

    ?如何在虛擬環(huán)境中使用 Python,提升你的開發(fā)體驗~

    RaspberryPiOS預裝了Python,你需要使用其虛擬環(huán)境來安裝包。今天出版的最新一期《TheMagPi》雜志刊登了我們文檔負責人NateContino撰寫的一篇實用教程,幫助你入門
    的頭像 發(fā)表于 03-25 09:34 ?819次閱讀
    ?如何在虛擬環(huán)境中使用 <b class='flag-5'>Python</b>,提升你的開發(fā)體驗~

    零基礎入門:如何在樹莓派上編寫和運行Python程序?

    在這篇文章中,我將為你簡要介紹Python程序是什么、Python程序可以用來做什么,以及如何在RaspberryPi上編寫和運行一個簡單的Python程序。什么是Python程序?
    的頭像 發(fā)表于 03-25 09:27 ?2058次閱讀
    零基礎入門:如何在樹莓派上編寫和運行<b class='flag-5'>Python</b>程序?