中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
技術(shù)圖文:Python屬性裝飾器詳解

背景

我們在以前的一篇圖文 Python基礎(chǔ) -- Task10. 類與對象 中介紹過利用property()方法既能保護(hù)類的封裝特性,又能讓開發(fā)者可以使用“對象.屬性”的方式操作類屬性。

class property([fget[, fset[, fdel[, doc]]]])

用于在新式類中返回屬性值。
fget -- 獲取屬性值的函數(shù)
fset -- 設(shè)置屬性值的函數(shù)
fdel -- 刪除屬性值函數(shù)
doc -- 屬性描述信息

并在圖文 Python魔法方法之屬性訪問詳解 中詳細(xì)介紹了property()方法的實(shí)現(xiàn)機(jī)理。

除了使用property()方法外,Python還提供了屬性裝飾器。通過這些屬性裝飾器,可以直接利用方法名來訪問方法,不需要在方法名后添加一對“()”小括號。

@property
def 方法名(self)
    代碼塊

@方法名.setter
def 方法名(self, value):

    代碼塊

@方法名.deleter
def 方法名(self):
    代碼塊    

代碼演示

1. Python屬性裝飾器舉例

class People:
    def __init__(self, name, age):
        self.__name = name
        self.__age = age if age > 0 else 0

    @property
    def age(self):
        return self.__age

    @age.setter
    def age(self, age):
        if isinstance(age, int):
            self.__age = age if age > 0 else 0
        else:
            raise ValueError

    @age.deleter
    def age(self):
        print('刪除年齡數(shù)據(jù)!')


obj = People('jack'18)
print(obj.age) # 獲取值
obj.age = 19 # 重新賦值
print('obj.age:', obj.age)
del obj.age # 刪除屬性

# 18
# obj.age: 19
# 刪除年齡數(shù)據(jù)!
  • @property裝飾器

上例中的第一個age(self)方法,這樣就使得該方法變成了age屬性的getter方法。需要注意的是,如果類中只包含該方法,那么age屬性將是一個只讀屬性。

  • @xxx.setter裝飾器

上例中的第二個age(self, age)方法,這樣就使得該方法變成了age屬性的setter方法,提供賦值功能。

  • @xxx.delete裝飾器

上例子中第三個age(self)方法,這樣就使得該方法變成了age屬性的deleter方法,用于刪除功能。

2. 使用property()函數(shù)

class People:
    def __init__(self, name, age):
        self.__name = name
        self.__age = age if age > 0 else 0

    def get_age(self):
        return self.__age

    def set_age(self, age):
        if isinstance(age, int):
            self.__age = age if age > 0 else 0
        else:
            raise ValueError

    def del_age(self):
        print("刪除年齡數(shù)據(jù)!")

    age = property(get_age, set_age, del_age, "年齡")


obj = People('jack'18)
print(obj.age)
obj.age = 19
print('obj.age:', obj.age)
del obj.age

# 18
# obj.age: 19
# 刪除年齡數(shù)據(jù)!

總結(jié)

本圖文介紹了Python中三種屬性裝飾器,并通過案例演示了這三種屬性裝飾器的使用方法,并利用property()方法實(shí)現(xiàn)了相同的功能。今天就到這里吧!See You!


參考文獻(xiàn)

  • http://c.biancheng.net/view/4561.html

  • http://www.liujiangblog.com/course/python/


本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服