国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語(yǔ)言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - python @property的用法及含義全面解析

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

2021-01-11 00:16qq41673534 Python

下面小編就為大家分享一篇python @property的用法及含義全面解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

在接觸python時(shí)最開(kāi)始接觸的代碼,取長(zhǎng)方形的長(zhǎng)和寬,定義一個(gè)長(zhǎng)方形類,然后設(shè)置長(zhǎng)方形的長(zhǎng)寬屬性,通過(guò)實(shí)例化的方式調(diào)用長(zhǎng)和寬,像如下代碼一樣。

?
1
2
3
4
5
6
class Rectangle(object):
  def __init__(self):
    self.width =10
    self.height=20
r=Rectangle()
print(r.width,r.height)

此時(shí)輸出結(jié)果為10 20

但是這樣在實(shí)際使用中會(huì)產(chǎn)生一個(gè)嚴(yán)重的問(wèn)題,__init__ 中定義的屬性是可變的,換句話說(shuō),是使用一個(gè)系統(tǒng)的所有開(kāi)發(fā)人員在知道屬性名的情況下,可以進(jìn)行隨意的更改(盡管可能是在無(wú)意識(shí)的情況下),但這很容易造成嚴(yán)重的后果。

?
1
2
3
4
5
6
7
8
class Rectangle(object):
  def __init__(self):
    self.width =10
    self.height=20
r=Rectangle()
print(r.width,r.height)
r.width=1.0
print(r.width,r.height)

以上代碼結(jié)果會(huì)輸出寬1.0,可能是開(kāi)發(fā)人員不小心點(diǎn)了一個(gè)小數(shù)點(diǎn)上去,但是會(huì)系統(tǒng)的數(shù)據(jù)錯(cuò)誤,并且在一些情況下很難排查。

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Rectangle(object):
  def width(self):
    #變量名不與方法名重復(fù),改為true_width,下同
    return self.true_width
 
  @property
  def height(self):
    return self.true_height
s = Rectangle()
#與方法名一致
s.width = 1024
s.height = 768
print(s.width,s.height)

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

此時(shí),如果在外部想要給width重新直接賦值就會(huì)報(bào)AttributeError: can't set attribute的錯(cuò)誤,這樣就保證的屬性的安全性。

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Rectangle(object):
  @property
  def width(self):
    # 變量名不與方法名重復(fù),改為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_height
s = Rectangle()
# 與方法名一致
s.width = 1024
s.height = 768
print(s.width,s.height)

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

?
1
2
3
@height.deleter
def height(self):
    del self.true_height

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

以上這篇python @property的用法及含義全面解析就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持服務(wù)器之家。

原文鏈接:http://blog.csdn.net/qq_41673534/article/details/79221070

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 四虎最新网址 | 日韩国产欧美精品 | 亚洲a在线播放 | 成人爽a毛片一区二区免费 久久久久亚洲精品 | 欧美精品一区二区三区四区 | 久久免费视频观看 | 午夜电影| 欧美大逼| 亚洲欧美日韩在线一区 | 国产精品美女久久久久aⅴ国产馆 | 国产视频福利 | 欧美日韩一区二区在线播放 | 午夜视频在线看 | 亚洲第一视频 | 99国产精品久久久久久久久久 | 国产精品久久久久久久久久新婚 | 午夜精品福利一区二区三区蜜桃 | 在线播放一区二区三区 | 一区二区三区自拍 | 欧美午夜一区二区三区免费大片 | 国产成人高清 | 天天爽夜夜爽夜夜爽精品视频 | 色www精品视频在线观看 | 一级黄色毛片免费观看 | 欧美亚洲| 台湾一级特黄aa大片免费看 | 中文字幕在线观看一区二区三区 | 中文字幕亚洲欧美 | 中文字幕视频 | 日韩成人在线看 | 一区二区三区国产 | 免费看日本黄色片 | 中文一区 | 婷婷毛片 | 久久精品国产久精国产 | 黄久久久 | 久久福利电影 | 精品成人在线视频 | 性刺激久久久久久久久九色 | 日韩在线一区二区 | 91在线免费视频 |