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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

Python的只讀屬性定義方法

汽車玩家 ? 來(lái)源:今日頭條 ? 作者:我愛學(xué)Python ? 2020-01-18 09:48 ? 次閱讀

Python是面向?qū)ο?OOP)的語(yǔ)言, 而且在OOP這條路上比Java走得更徹底, 因?yàn)樵赑ython里, 一切皆對(duì)象, 包括int, float等基本數(shù)據(jù)類型.

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

通過(guò)私有屬性

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

輸出:

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

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

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

輸出:

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

代碼:

輸出:

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

    關(guān)注

    19

    文章

    2952

    瀏覽量

    104493
  • python
    +關(guān)注

    關(guān)注

    55

    文章

    4774

    瀏覽量

    84386
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    ESP32下如何加自定義Python庫(kù)?

    我看官方有提供Micropython的bin文件,但我想根據(jù)自己外設(shè)擴(kuò)充一下Python庫(kù),這個(gè)應(yīng)該從哪里入手? 之前做過(guò)RTT系統(tǒng)的python庫(kù)擴(kuò)充,RTT有提供Micropython的源代碼,直接在里面加自己的庫(kù)就行 ESP32下如何加自
    發(fā)表于 06-18 06:27

    Linux的declare/typeset命令介紹

    ,即使在函數(shù)內(nèi)定義變量-i:聲明整型變量-l:將變量值的小寫字母變?yōu)樾?r:設(shè)置只讀屬性-t:設(shè)置變量跟蹤屬性,用于跟蹤函數(shù)進(jìn)行調(diào)試,對(duì)于變量沒有特殊意義-u:變量值的大寫字母變?yōu)榇?/div>
    發(fā)表于 04-08 07:03

    arcgis中如何在屬性表中選擇多個(gè)屬性

    在ArcGIS中,你可以通過(guò)多種方式來(lái)選擇屬性表中的多個(gè)屬性。下面是一些常用的方法方法一:使用Select by Attributes工具 在ArcGIS的
    的頭像 發(fā)表于 02-25 11:10 ?1.3w次閱讀

    mapgis區(qū)屬性賦參數(shù)

    賦值。本文將介紹MapGIS區(qū)屬性賦參數(shù)功能,包括其定義、應(yīng)用場(chǎng)景、操作步驟和特點(diǎn)等內(nèi)容。 一、定義 MapGIS區(qū)屬性賦參數(shù)是指在地理空間數(shù)據(jù)中,根據(jù)不同的區(qū)域特征和
    的頭像 發(fā)表于 02-25 10:56 ?947次閱讀

    mapgis如何給區(qū)屬性賦值

    地進(jìn)行數(shù)據(jù)分析和可視化。 在MapGIS中給區(qū)屬性賦值有多種方法,下面將詳細(xì)介紹其中的幾種常用方法。 1.手動(dòng)賦值 手動(dòng)賦值是最直接和簡(jiǎn)單的方法。首先,在MapGIS中打開需要進(jìn)行
    的頭像 發(fā)表于 02-23 17:49 ?1994次閱讀

    OpenHarmony 定義擴(kuò)展組件樣式:@Extend 裝飾器

    的私有屬性和私有事件,以及預(yù)定義相同組件的 @Extend 的方法。 ? // @Extend(Text)可以支持Text的私有屬性fontColor@Extend(Text) fun
    的頭像 發(fā)表于 02-01 20:53 ?250次閱讀

    如何解決Python爬蟲中文亂碼問題?Python爬蟲中文亂碼的解決方法

    如何解決Python爬蟲中文亂碼問題?Python爬蟲中文亂碼的解決方法Python爬蟲過(guò)程中,遇到中文亂碼問題是常見的情況。亂碼問題主要是由于編碼不一致所導(dǎo)致的,下面我將詳細(xì)介紹
    的頭像 發(fā)表于 01-12 15:11 ?2116次閱讀

    placeholder屬性和value屬性的差別

    重要性。 第一部分:理解placeholder屬性 1.1 定義placeholder屬性 placeholder屬性是HTML中用于表單字段的屬性
    的頭像 發(fā)表于 11-30 10:13 ?1640次閱讀

    查看python安裝路徑的方法

    如何查看Python安裝路徑,以及各個(gè)操作系統(tǒng)下的細(xì)節(jié)和注意事項(xiàng)。 一、Windows操作系統(tǒng)下查看Python安裝路徑的方法 對(duì)于Windows操作系統(tǒng),有多種方法可以查看
    的頭像 發(fā)表于 11-29 14:54 ?1.1w次閱讀

    運(yùn)行Python程序的幾種常見方法

    Python是一種高級(jí)編程語(yǔ)言,具有簡(jiǎn)單易學(xué),易于閱讀和調(diào)試的特點(diǎn)。當(dāng)你完成了一個(gè)Python程序之后,你需要運(yùn)行它以檢查程序是否按照預(yù)期工作。下面是運(yùn)行Python程序的幾種常見方法
    的頭像 發(fā)表于 11-28 15:32 ?2343次閱讀

    python調(diào)用math函數(shù)的方法

    中。本文將詳細(xì)介紹math模塊中的各種數(shù)學(xué)函數(shù)的調(diào)用方法,包括函數(shù)的功能、參數(shù)的使用和返回值的含義等方面,以幫助讀者更好地理解和應(yīng)用這些函數(shù)。 一、導(dǎo)入math模塊 要使用math模塊中的函數(shù),首先需要將其導(dǎo)入到Python程序中??梢允褂胕mport語(yǔ)句將
    的頭像 發(fā)表于 11-22 11:01 ?2723次閱讀

    復(fù)數(shù)中i在Python中如何定義

    復(fù)數(shù)中的虛數(shù)單位'i'在Python中可以通過(guò)使用cmath模塊來(lái)定義和使用。cmath模塊提供了處理復(fù)數(shù)的函數(shù)和常量。 在Python中,虛數(shù)單位'i'表示為1j。它是一個(gè)特殊的數(shù)值,并且可以
    的頭像 發(fā)表于 11-22 09:40 ?2756次閱讀

    python怎么定義空集合

    Python中,可以通過(guò)兩種方式來(lái)定義一個(gè)空集合: 使用大括號(hào) {} 創(chuàng)建空集合 使用 set() 函數(shù)創(chuàng)建空集合 第一種方式是最常見的,直接使用大括號(hào) {} 來(lái)創(chuàng)建一個(gè)沒有任何元素的空集合。例如
    的頭像 發(fā)表于 11-21 16:20 ?5057次閱讀

    python的insert方法

    insert()方法Python中的列表對(duì)象提供的一個(gè)方法,用于在指定位置插入一個(gè)元素。該方法的語(yǔ)法如下: list. insert ( index , obj) 其中,index表
    的頭像 發(fā)表于 11-21 14:27 ?1376次閱讀

    python如何定義一個(gè)函數(shù)

    一、Python3 函數(shù) 函數(shù)是組織好的,可重復(fù)使用的,用來(lái)實(shí)現(xiàn)單一,或相關(guān)聯(lián)功能的代碼段。 函數(shù)能提高應(yīng)用的模塊性,和代碼的重復(fù)利用率。你已經(jīng)知道Python提供了許多內(nèi)建函數(shù),比如 print
    的頭像 發(fā)表于 11-14 11:26 ?673次閱讀