python之property屬性

Property的概念:property是一種特殊的屬性,訪問它時會執行一段功能(函數),然后返回值。

import mathclass Circle:def __init__(self,radius):#園的半徑radiusself.radius=radius@property#area=property(area)def area(self):return math.pi*self.radius**2#計算面積@propertydef perimeter(self):return 2*math.pi*self.radius#計算周長c=Circle(5)print(c.radius)# print(c.area())# print(c.perimeter())print(c.area)#函數前添加裝飾器后,調用時不加括號就可以運行print(c.perimeter)

  

?

為什么要用property

將一個類的函數定義成特性以后,對象再去使用的時候obj,name根本無法察覺自己的name是執行了一個函數然后計算出來的,這種特性的使用方式遵循了統一訪問的原則

除此之外:

面向對象的封裝有三種方式:

【public】

這種其實就是不封裝,是對外公開的

【protected】

這種封裝方式對外不公開,但對朋友或者子類公開

【private】
這種封裝對誰都不公開

Python并沒有在語法上把他們三個內建到自己的CLASS機制中,在C++里一般會將所有的數據設置為私有的,然后提供set和get方法去設置和獲取,在Python中通過property方法可以實現

?

class Foo:def __init__(self,val):self.__NAME=val #將所有的數據屬性都隱藏起來@propertydef name(self):return self.__NAME #obj.name訪問的是self.__NAME(這也是真實值的存放位置)@name.setterdef name(self,value):if not isinstance(value,str):  #在設定值之前進行類型檢查raise TypeError('%s must be str' %value)self.__NAME=value #通過類型檢查后,將值value存放到真實的位置self.__NAME@name.deleterdef name(self):raise TypeError('Can not delete')f=Foo('egon')print(f.name)# f.name=10 #拋出異常'TypeError: 10 must be str'del f.name #拋出異常'TypeError: Can not delete'

  

轉載于:https://www.cnblogs.com/asaka/p/6758487.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/370972.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/370972.shtml
英文地址,請注明出處:http://en.pswp.cn/news/370972.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Hexo使用細節及各種問題

解決markdown圖片不顯示(返回403 forbidden)、添加本地圖片無法顯示、修改文章page模板、同時部署發布同步到多個倉庫站點(Github、coding、gitee 碼云) 圖片不顯示 在使用過程中,會發現有的引用圖片無法顯示的問題。但是如果直接復制圖片地址到瀏覽器打開的話顯示…

oracle的等保,Oracle等保測評相關指令

Oracle用戶管理:SQL*Pluscreate user 用戶名 identified by 密碼; //創建用戶grant 權限(dba管理員,resource普通用戶,connect訪客) to 用戶名; //授權drop user 用戶名 cascade; //刪除用戶,加cascade會把用戶創建的所有東西刪除Linux設置用…

Spring3 + JPA2 + Java EE6 App Server =配置混亂

Spring很棒,JavaEE6很棒,最新的JavaEE6 Application服務器也很棒。 這篇文章不是Spring Vs JavaEE6上的專欄文章,而是我在JBoss AS-7.1 App Server上移植Spring3 JPA2(Hibernate)應用程序的經驗。 我的應用程序要求非…

python面向對象進階(1)

面向對象進階 isinstance(obj,cls) 檢查是否obj是類cls的對象class Foo(object): passobj Foo() isinstance(obj,Foo)issubclass(sub,super) 檢查sub是否是super的派生類class Foo(object): passclass Bar(Foo): passissubclass(Bar,Foo) 反射python面向對象中的反射&#xff…

智能小車37:異常在ARM、JAVA、硬件里的實現

幾乎所有編程語言都有異常,可以說有程序就有異常。今天學習Arm的中斷(異常)處理,聯想到Java的異常,硬件中如何實現等問題,下面給大家分享一下。 一、Arm的中斷。 1.觸發異常 2.保存現場 3.cpu進入異常工作模式,程序指針(pc)跳入異常入口&…

c++builder提高批量動態創建panel的速度_騎行時影響速度的事項有哪些 怎樣有效提高騎行速度 單車租賃信息...

撇開人的因素在自行車的組件中對車速影響最大的幾項是什么?車重?自鎖?輪組?傳動?我的個人感受,從提高幅度上來講,而不是重要性上來講一、自鎖起碼提高你50%的速度,我不用自鎖和別人一起走AVS25就很辛苦了,用了自鎖&#xff0…

ansys matlab 調用,matlab 調用ansys (轉載)

問題的提出:我們經常會需要用ansys計算一些東西,之后再用matlab來處理計算的結果。當修改某些參數重復上述過程的時候,就比較容易出現問題——比如ansys模型中的參數和matlab程序中參數的一致性問題等。這時可以考慮采用下面的協同工作的方法…

本地存儲之sessionStorage

源碼可以到GitHub上下載! sessionStorage: 關閉瀏覽器再打開將不保存數據 復制標簽頁會連同sessionStorage數據一同復制 復制鏈接地址打開網頁不會復制seessionStorage內的數據 清除緩存加載當前頁對頁面無影響 1) 同源策略限制。若想在不同頁面之間對同…

哈希三道題

兩數之和 給定一個整數數組 nums 和一個整數目標值 target,請你在該數組中找出 和為目標值 target 的那 兩個 整數,并返回它們的數組下標。 你可以假設每種輸入只會對應一個答案。但是,數組中同一個元素在答案里不能重復出現。 你可以按任意…

zemax光學設計超級學習手冊_穿越十年的一個ZEMAX光學設計案例

目前超過兩千人的光學與光學設計方面的微信公眾號,歡迎您!穿越十年的一個ZEMAX光學設計案例作者:窗臺小綠蘿CAD,這個詞已經深入到學習、工作很多年,翻譯過來就是Computer Aided Design,計算機輔助設計。隨著…

Java本質和性能

最初的問題是如何計算二進制數中1的個數? 我包含了使用Integer.bitCount()的性能比較,該性能可以轉換為固有特性,即單個機器代碼指令POPCNT和執行相同功能的Java代碼。 題 如何計算二進制數中1的個數? 假…

spring RequestMapping 包含http的部分以及各部分詳解

RequestMapping有四個參數,分別為:1、value:表示請求URL2、method:表示請求方法3、params:表示請求參數4、headers:表示請求頭 【例如】:RequestMapping(value"/testRequestMapping",…

【ZBH選講·拍照】

【問題描述】 假設這是一個二次元。LYK召集了n個小伙伴一起來拍照。他們分別有自己的身高Hi和寬度Wi。為了放下這個照片并且每個小伙伴都完整的露出來,必須需要一個寬度為ΣWi,長度為max{Hi}的相框。(因為不能疊羅漢)。LYK為了節省…

php基礎是什么,php基礎學什么?

有不少同學想要學習 PHP,但又不清楚 PHP 基礎學什么,那么這篇文章告訴你。熟悉前端開發語言學習 PHP 之前,首先要學習前端語言包括 HTML、CSS、JS 等。等對前端語言有個大致掌握后,能編寫一個 web 靜態頁面。學習 PHP 基本語法和函…

名為 cursor_jinserted 的游標不存在_生鮮電商存在的問題及對策解析:未來生鮮電商如何發展?...

生鮮電商的特點有哪些?生鮮電商特點:1,生鮮電商具有粘性高、重復購買率高、毛利高的“三高”特性;2,生鮮食品需要保鮮、冷藏、冷凍;3,生鮮食品保質期比較短;保存不易、對物流配送的條件要求極高;4,生鮮商品…

遇到短信轟炸,別人換ip調你的短信接口怎么辦

前端開發者很容易暴露自己的請求地址和參數,我們都知道,一個h5頁面,按 F12 是可以看到頁面的源碼的,所以經常很多人會利用這一點惡意調取別人的接口。 我們公司出現了好多次短信接口被大量調用,導致一天發了幾萬條短信…

UVa 10170 - The Hotel with Infinite Rooms

題目:求從s開始的遞增序列(每次加1)。求出他們加和不小于D的那個最后的加數。 分析:數學題。分治。s s1 ... n n*(n1)/2 - s*(s-1)/2 (ns)*(…

番石榴函數和Java 8 Lambdas

我最近閱讀了Brian Goetz的《 Lambda的狀況》 ,在閱讀了該文章之后,我想嘗試使用Java 8 Lambda表達式。 Brian在他的文章中繼續描述了將一種方法稱為“功能”接口的接口。 功能接口幾乎總是用作匿名類,其中ActionListener是規范示例。 這些“…

linux rsync刪文件速度,為什么用rsync刪除大量文件的時候比用rm快

為什么用rsync刪除大量文件的時候比用rm快今天研究怎么在Linux下快速刪除大量文件,搜到很多人都說可以用rsync來刪除大量文件,速度比rm要快很多,但是沒有人說為什么,仔細研究了一下原因,總結起來大概就是,一…

關于源碼,反碼,補碼(正數--負數)---------(-128)自己的理解

以一個字節為例 1、無符號位,一個字節可以存放0~255共256個數字;有符號位存放-128~127共256個數字; 2、無符號全都表示為正數;有符號位則首位表示正負數,正數首位為0,負數首位為1(因此在判斷一個…