Python高階 property屬性

2021-08-28 02:16:26 字數 3412 閱讀 2858

1.property屬性:

是乙個提高開發者使用者體驗度的屬性,可以將乙個函式改造的像屬性一樣。

例:

# 定義的時候像是乙個函式 使用的時候和屬性的方式是以樣的

class

foo(object):

@property

defmoney

(self):

return

100# f = foo()

# m = f.money()

# print(m)

f = foo()

print(f.money)

執行結果:

2.property簡單應用:

例:根據當前頁數和每頁顯示資料條數,計算出該頁起始編號和結尾編號

class

pager:

def__init__

(self, current_page):

# 使用者當前請求的頁碼(第一頁、第二頁...)

self.current_page = current_page

# 每頁預設顯示100條資料

self.per_items = 100

@property

defstart

(self):

val = (self.current_page - 1) * self.per_items + 1

return val

@property

defend

(self):

val = self.current_page * self.per_items

return val

p = pager(2)

print(p.start)

print(p.end)

執行結果:

3.裝飾器方式:在方法上應用裝飾器

三種@property裝飾器:

class

goods:

@property

defprice

(self):

print('@property')

@price.setter

defprice

(self, value):

print('@price.setter')

@price.deleter

defprice

(self):

print('@price.deleter')

# ############### 呼叫 ###############

obj = goods()

obj.price # 自動執行 @property 修飾的 price 方法,並獲取方法的返回值

obj.price = 123

# 自動執行 @price.setter 修飾的 price 方法,並將 123 賦值給方法的引數

del obj.price # 自動執行 @price.deleter 修飾的 price 方法

例:class

goods

(object):

def__init__

(self):

self.org_price = 1000

# **

self.discount = 0.7

# 折扣

@property

defprice

(self):

val = self.org_price * self.discount

# 返回***折扣

return val

@price.setter

defprice

(self, new_val):

# 接收val,將**修改為val

self.org_price = new_val

@price.deleter

defprice

(self):

# 將折扣修改為1(刪掉折扣)

self.discount = 1

g = goods()

print(g.price)

g.price = 2000

print(g.price)

del g.price

print(g.price)

執行結果:

4.類屬性方式:在類中定義值為property物件的類屬性

屬性名 =property(獲取, 修改, 刪除, 備註)
例:

class

goods

(object):

def__init__

(self):

self.org_price = 1000

# **

self.discount = 0.7

# 折扣

defget_price

(self):

val = self.org_price * self.discount

# 返回***折扣

return val

defset_price

(self, new_val):

# 接收new_val,將**修改為new_val

self.org_price = new_val

defdel_price

(self):

# 將折扣修改為1(刪掉折扣)

self.discount = 1

price = property(get_price, set_price, del_price, "備註:**")

g = goods()

print(g.price) # 獲取商品**

g.price = 2000

# 修改商品**

print(g.price)

del g.price # 刪除商品折扣

print(g.price)

print(goods.price.__doc__)

執行結果:

Python 今天抽空學習了 Property

1 property使方法像屬性一樣呼叫 property可以把乙個例項方法變成其同名屬性,以支援.號訪問,它亦可標記設定限制,加以規範 2 property成為屬性函式,可以對屬性賦值時做必要的檢查,比如在setter方法裡加過濾判斷條件。3 顯得相對簡潔一些,相比自定義的get和set方法,pr...

Uiautomator讀取properties檔案

1.建立assets資料夾 工程上右鍵new folder assets folder 2.在assets資料夾中建立prop檔案 在assets資料夾中右鍵new file,輸入名稱 prop 3.在prop檔案中新增引數,格式為 key value 如 time 100 name qq 4.封裝...

properties檔案與Properties類

當我們寫乙個簡單程式 例如圖書管理 快遞管理等 時,經常會有一些困擾,我們上一次錄入的物件資訊,下一次都不能儲存。在我們學習了檔案的io操作後,也許可以將這些資訊寫入檔案中,下一次執行程式時就可以載入資料。這些資訊的儲存有一些成熟的格式,比如說xml,json等,我們先來學習一下.propertie...