91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python的property怎么使用

發布時間:2021-11-25 09:27:33 來源:億速云 閱讀:127 作者:iii 欄目:互聯網科技

本篇內容介紹了“python的property怎么使用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

一、聯動

案例

class Goods:def __init__(self, name, price, count=1):self.name = name  # 商品名稱self.price = price  # 商品單價self.count = float(count)  # 商品數量self.total = price*count

    
apple = Goods('蘋果', 5, 2)print(apple.total)apple.count = 3print(apple.total)out:1010

在上述案例中建了一個Goods(商品)類,它有name(商品名稱)、price(商品單價)、count(商品數量)。它內部還有個toatl(商品總價)屬性,這個屬性是根據單價乘數量計算得來的。

接下來建了一個實例:apple,名稱是蘋果,單價是5,數量是2。現在打印apple.total顯示是10,結果正常,可是當我們把數量改成3以后再打印apple.total結果仍然是10,數據沒有產生聯動!編程的時候一定要避免這樣的情況發生。

正解

class Goods:def __init__(self, name, price, count=1):self.name = name  # 商品名稱self.price = price  # 商品單價self.count = float(count)  # 商品數量@propertydef total(self):  # 商品總價return self.price*self.count


apple = Goods('蘋果', 5, 2)print(apple.total)apple.count = 3print(apple.total)

在這段代碼中,通過將total方法偽裝成屬性的方式,我們可以獲得聯動的total屬性。

好了,請記住使用property的第一條優點——數據聯動。

二、健壯

繼續上述的案例講健壯,假設商品數量是售貨員手動輸入的,若遇到售貨員不小心將數量輸成了’a’會發生什么呢?

class Goods:def __init__(self, name, price, count=1):self.name = name  # 商品名稱self.price = price  # 商品單價self.count = float(count)  # 商品數量@propertydef total(self):  # 商品總價return self.price*self.count


apple = Goods('蘋果', 5, 'a')print(apple.total)out:ValueError: could not convert string to float: 'a'

這下程序直接報錯,異常退出了!當然你可以指責售貨員的不小心,但同時也不能否認自己編寫的代碼容錯率低,也就是不健壯,動不動就報錯!合格的程序員編寫代碼時必須考慮到各種情況,提高程序的健壯性。下面我們針對上述的情況更正代碼:

class Goods:def __init__(self, name, price, count=1):self.name = name  # 商品名稱self.price = price  # 商品單價self.__count = count  # 商品數量@propertydef count(self):try:self.__count = float(self.__count)except ValueError:print('輸入數量有誤,數值自動修正為1.0,請注意核對!')self.__count = 1.0return self.__count
    
    @count.setterdef count(self, n):try:n = float(n)except ValueError:print('輸入數量有誤,數值自動修正為1.0,請注意核對!')n = 1.0self.__count = n
   
    @propertydef total(self):  # 商品總價return self.price*self.count


apple = Goods('蘋果', 5, 'a')print(apple.total)apple.count = 'bb'print(apple.total)out:輸入數量有誤,數值自動修正為1.0,請注意核對!5.0輸入數量有誤,數值自動修正為1.0,請注意核對!5.0

注意@函數名.setter的寫法,這個函數名要和前一個@property下一行的函數名要一致。

三、安全

繼續上述的代碼講安全,數據安全有一項重要的內容就是確保數據值在合理范圍區間,如果不對重要數據進行值范圍校驗就會發生重大差錯。假設上述案例中某營業員將銷售數量改成負數會發生什么?顯而易見的會發生賬目差錯,所以我們要對count數值進行校驗,不能接受負數。

因此必須修改@count.setter部分:

    @count.setterdef count(self, n):try:n = float(n)if n < 0:print('輸入數量有誤,數值自動修正為0,請注意核對!')n = 0except ValueError:print('輸入數量有誤,數值自動修正為1.0,請注意核對!')n = 1.0self.__count = n

最后補充一下property的deleter部分,它可以在調用del apple.count時刪除__count屬性:

    @count.deleterdef count(self):del self.__count

“python的property怎么使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

谷城县| 商水县| 惠州市| 井冈山市| 金川县| 昌吉市| 营山县| 犍为县| 青阳县| 乐平市| 花莲市| 罗甸县| 铜鼓县| 临城县| 筠连县| 宁河县| 祁东县| 林周县| 东辽县| 德昌县| 乌拉特后旗| 宝兴县| 麻江县| 泽普县| 乌兰浩特市| 宁陵县| 洛阳市| 从化市| 台江县| 垦利县| 京山县| 平阳县| 平度市| 阿坝| 梅州市| 颍上县| 吴桥县| 浪卡子县| 松溪县| 华阴市| 平泉县|