国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python @property的用法及含義全面解析

2020-02-22 23:05:42
字體:
來源:轉載
供稿:網友

在接觸python時最開始接觸的代碼,取長方形的長和寬,定義一個長方形類,然后設置長方形的長寬屬性,通過實例化的方式調用長和寬,像如下代碼一樣。

class Rectangle(object):  def __init__(self):    self.width =10    self.height=20r=Rectangle()print(r.width,r.height)

此時輸出結果為10 20

但是這樣在實際使用中會產生一個嚴重的問題,__init__ 中定義的屬性是可變的,換句話說,是使用一個系統的所有開發人員在知道屬性名的情況下,可以進行隨意的更改(盡管可能是在無意識的情況下),但這很容易造成嚴重的后果。

class Rectangle(object):  def __init__(self):    self.width =10    self.height=20r=Rectangle()print(r.width,r.height)r.width=1.0print(r.width,r.height)

以上代碼結果會輸出寬1.0,可能是開發人員不小心點了一個小數點上去,但是會系統的數據錯誤,并且在一些情況下很難排查。

這是生產中很不情愿遇到的情況,這時候就考慮能不能將width屬性設置為私有的,其他人不能隨意更改的屬性,如果想要更改只能依照我的方法來修改,@property就起到這種作用(類似于java中的private)

class Rectangle(object):  @property  def width(self):    #變量名不與方法名重復,改為true_width,下同    return self.true_width  @property  def height(self):    return self.true_heights = Rectangle()#與方法名一致s.width = 1024s.height = 768print(s.width,s.height)

(@property使方法像屬性一樣調用,就像是一種特殊的屬性)

此時,如果在外部想要給width重新直接賦值就會報AttributeError: can't set attribute的錯誤,這樣就保證的屬性的安全性。

同樣為了解決對屬性的操作,提供了封裝方法的方式進行屬性的修改

class Rectangle(object):  @property  def width(self):    # 變量名不與方法名重復,改為true_width,下同    return self.true_width  @width.setter  def width(self, input_width):    self.true_width = input_width  @property  def height(self):    return self.true_height  @height.setter  #與property定義的方法名要一致  def height(self, input_height):    self.true_height = input_heights = Rectangle()# 與方法名一致s.width = 1024s.height = 768print(s.width,s.height)

此時就可以對“屬性”進行賦值操作,同樣的方法還del,用處是刪除屬性,寫法如下,具體實現不在贅述。

@height.deleterdef height(self):    del self.true_height

總結一下@property提供了可讀可寫可刪除的操作,如果像只讀效果,就只需要定義@property就可以,不定義代表禁止其他操作。

以上這篇python @property的用法及含義全面解析就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林站長站。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宿迁市| 临安市| 普定县| 青海省| 嘉峪关市| 苍山县| 乐昌市| 松阳县| 阿拉尔市| 大关县| 台北市| 湘潭市| 汉川市| 黔江区| 新泰市| 平阴县| 苍梧县| 三明市| 安岳县| 宿松县| 玉田县| 曲水县| 友谊县| 措勤县| 宝山区| 清远市| 泰宁县| 博罗县| 奉节县| 郓城县| 荆州市| 达州市| 兴海县| 华池县| 麻栗坡县| 阳朔县| 永吉县| 尉犁县| 沙洋县| 桂东县| 吴堡县|