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

溫馨提示×

溫馨提示×

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

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

Python對象屬性自動更新操作示例

發布時間:2020-08-26 12:36:31 來源:腳本之家 閱讀:186 作者:grey_csdn 欄目:開發技術

本文實例講述了Python對象屬性自動更新操作。分享給大家供大家參考,具體如下:

在軟件設計中會遇到這樣的問題:有些屬性之間有相互關聯。這樣,其中的一個屬性變化的時候其他的屬性也應該跟隨變化。

先看一段示例代碼:

# -*- coding:utf-8 -*-
#!python3
class DemoClss:
  def __init__(self,val1,val2):
    self.val1= val1
    self.val2= val2
    self.sum= self.val1 + self.val2
obj = DemoClss(123,234)
print(obj.sum)
obj.val1 = 321
print(obj.sum)

代碼的執行結果如下:

Python對象屬性自動更新操作示例

兩個結果一致!其實,這種類似的設計中我們大多時候是希望有一個sum屬性跟隨者兩個數值能夠自動變化。但是,上面的這種方式顯然是不行的,因為這種設計的生效只能夠是在初始化的時候生效。

那么,如果想要實現一個隨時求和的方法我們該怎么做呢?其實,我們可以通過方法來實現!代碼的改進如下:

# -*- coding:utf-8 -*-
#!python3
class DemoClss:
  def __init__(self,val1,val2):
    self.val1= val1
    self.val2= val2
  def sum(self):
    return self.val1 + self.val2
obj = DemoClss(123,234)
print(obj.sum())
obj.val1 = 321
print(obj.sum())

程序的執行結果如下:

Python對象屬性自動更新操作示例

這樣的改進方式是可行的,但是卻總覺得有點不方便。因為總體上的實現并沒有體現出OOP的什么優勢,說穿了這其實還是函數調用而已。那么,能不能改進一下呢?我們期望的又是一種什么樣的效果呢?其實,我們需要的功能應該是一個初始化功能而方法功能的一個結合體,而這種類似功能的結合體是存在的,那就是特性。特性是一種看上去像方法的屬性,每次引用都會執行相關的方法。如此,代碼改進如下:

# -*- coding:utf-8 -*-
#!python3
class DemoClss:
  def __init__(self,val1,val2):
    self.val1= val1
    self.val2= val2
  @property
  def sum(self):
    return self.val1 + self.val2
obj = DemoClss(123,234)
print(obj.sum)
obj.val1 = 321
print(obj.sum)

程序執行結果如下:

Python對象屬性自動更新操作示例

這樣就實現了關聯屬性的自動更新,看上去更加符合人們的正常思維了。

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python面向對象程序設計入門與進階教程》、《Python數據結構與算法教程》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》、《Python編碼操作技巧總結》及《Python入門與進階經典教程》

希望本文所述對大家Python程序設計有所幫助。

向AI問一下細節

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

AI

大洼县| 竹山县| 宜章县| 安吉县| 嘉祥县| 嘉荫县| 读书| 桃园县| 汕尾市| 东山县| 玛沁县| 洱源县| 池州市| 金塔县| 泉州市| 绥阳县| 土默特左旗| 长宁县| 临江市| 河南省| 香格里拉县| 巨鹿县| 辽宁省| 呼玛县| 枞阳县| 聊城市| 长沙市| 昭平县| 南岸区| 阳信县| 郎溪县| 彩票| 合山市| 新丰县| 东台市| 六安市| 东城区| 鄂温| 东安县| 乐东| 义马市|