您好,登錄后才能下訂單哦!
這篇文章主要講解了Python中使用@property @x.setter及@x.deleter的方法,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。
@property可以將python定義的函數“當做”屬性訪問,從而提供更加友好訪問方式,但是有時候setter/deleter也是需要的。
代碼如下
class student(object): #新式類 def __init__(self,id): self.__id=id @property #讀 def score(self): return self._score @score.setter #寫 def score(self,value): if not isinstance(value,int): raise ValueError('score must be an integer!') if value<0 or value>100: raise ValueError('score must between 0 and 100') self._score=value @property #讀(只能讀,不能寫) def get_id(self): return self.__id s=student('123456') s.score=60 #寫 print s.score #讀 #s.score=-2 #ValueError: score must between 0 and 100 #s.score=32.6 #ValueError: score must be an integer! s.score=100 #寫 print s.score #讀 print s.get_id #讀(只能讀,不可寫) #s.get_id=456 #只能讀,不可寫:AttributeError: can't set attribute
運行結果:
60
100
123456
代碼
class A(object):#要求繼承object def __init__(self): self.__name=None #下面開始定義屬性,3個函數的名字要一樣! @property #讀 def name(self): return self.__name @name.setter #寫 def name(self,value): self.__name=value @name.deleter #刪除 def name(self): del self.__name a=A() print a.name #讀 a.name='python' #寫 print a.name #讀 del a.name #刪除 #print a.name # a.name已經被刪除 AttributeError: 'A' object has no attribute '_A__name'
結果
None
python
看完上述內容,是不是對Python中使用@property @x.setter及@x.deleter的方法有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。