1. 程式人生 > 其它 >python 中 property 屬性的講解及應用

python 中 property 屬性的講解及應用

技術標籤:程式語言python

Python中property屬性的功能是:property屬性內部進行一系列的邏輯計算,最終將計算結果返回
property屬性的有兩種方式:

  1. 裝飾器 即:在方法上應用裝飾器

  2. 類屬性 即:在類中定義值為property物件的類屬性

裝飾器:

裝飾器類有三種訪問方式,並分別對應了三個被@property、@方法名.setter、@方法名.deleter修飾的方法,定義為對同一個屬性:獲取、修改、刪除

  class Goods(object):

      def __init__(self):
          # 原價
          self.
original_price = 100   # 折扣   self.discount = 0.8   @property   def price(self):   # 實際價格 = 原價 * 折扣   new_price = self.original_price * self.discount   return new_price   @price.setter   def price(self, value):   self.original_price = value   @price.
deleter   def price(self):   del self.original_price   obj = Goods()   obj.price # 獲取商品價格   obj.price = 200 # 修改商品原價   del obj.price # 刪除商品原價

類屬性

property方法中有個四個引數

  • 第一個引數是方法名,呼叫 物件.屬性 時自動觸發執行方法,對應獲取功能

  • 第二個引數是方法名,呼叫 物件.屬性 = XXX 時自動觸發執行方法,對應修改功能

  • 第三個引數是方法名,呼叫 del 物件.屬性 時自動觸發執行方法,對應刪除功能

  • 第四個引數是字串,呼叫 物件.屬性.__doc__ ,此引數是該屬性的描述資訊

'''
遇到問題沒人解答?小編建立了一個Python學習交流QQ群:778463939
尋找有志同道合的小夥伴,互幫互助,群裡還有不錯的視訊學習教程和PDF電子書!
'''
class Goods(object):

	def __init__(self):
		# 原價
		self.original_price = 100
		# 折扣
		self.discount = 0.8

	def get_price(self):
		# 實際價格 = 原價 * 折扣
		new_price = self.original_price * self.discount
		return new_price

	def set_price(self, value):
		self.original_price = value

	def del_price(self):
		del self.original_price

	PRICE = property(get_price, set_price, del_price, '價格屬性描述...')

obj = Goods()
obj.PRICE         # 獲取商品價格
obj.PRICE = 200   # 修改商品原價
del obj.PRICE     # 刪除商品原價