日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

大家好,我是大爆炸

在介紹@property前先介紹property()。

property()構(gòu)造函數(shù)返回property屬性。其語法是:

property(fget=None, fset=None, fdel=None, doc=None)

property()參數(shù):

  1. fget (optional) - 用于獲取屬性值,默認(rèn)為None。
  2. fset (optional) - 用于設(shè)置屬性值,默認(rèn)為None。
  3. fdel (optional) - 用于刪除屬性值。默認(rèn)為None。
  4. doc (optional) - 包含該屬性的文檔(docstring)的字符串。默認(rèn)為None。

property()返回值:

property()從給定的getter、setter和deleter返回property屬性。

  1. 如果沒有給出參數(shù),property()返回一個不包含任何getter、setter或deleter的基屬性屬性。
  2. 如果沒有提供doc,property()接受getter函數(shù)的文檔字符串。

示例1:使用getter、setter和deleter創(chuàng)建屬性

class Person:
    def __init__(self, name):
        self._name = name

    def get_name(self):
        print('Getting name')
        return self._name

    def set_name(self, value):
        print('Setting name to ' + value)
        self._name = value

    def del_name(self):
        print('Deleting name')
        del self._name

    # Set property to use get_name, set_name
    # and del_name methods
    name = property(get_name, set_name, del_name, 'Name property')

p = Person('Adam')
print(p.name)
p.name = 'John'
del p.name

結(jié)果:

Getting name
The name is: Adam
Setting name to John
Deleting name

這里,_name被用作私有變量,用于存儲Person的名稱。

我們還設(shè)置:

  1. getter方法get_name()來獲取人員的姓名,
  2. setter方法set_name()來設(shè)置人員的姓名,
  3. deleter方法del_name()來刪除人員的姓名。

通過調(diào)用property()方法來設(shè)置一個新的屬性name。

如程序所示,內(nèi)部引用p.name調(diào)用get_name()作為getter, set_name()作為setter, del_name()作為deleter,通過方法內(nèi)部的打印輸出。

示例2:使用@property裝飾器

可以使用Python/ target=_blank class=infotextkey>Python裝飾器@property來分配getter、setter和deleter,而不是使用property()。

class Person:
    def __init__(self, name):
        self._name = name

    @property
    def name(self):
        print('Getting name')
        return self._name

    @name.setter
    def name(self, value):
        print('Setting name to ' + value)
        self._name = value

    @name.deleter
    def name(self):
        print('Deleting name')
        del self._name

p = Person('Adam')
print('The name is:', p.name)
p.name = 'John'
del p.name

輸出:

Getting name
The name is: Adam
Setting name to John
Deleting name

這里使用了@property裝飾器,而不是property()。

  1. 首先,指定name()方法也是Person的一個屬性。這是通過在getter方法之前使用@property來實(shí)現(xiàn)的。
  2. 接下來,使用屬性名來指定setter和deleter。這是通過使用@name完成的。@name.setter用于setter方法,@name.deleter用于deleter方法。

在定義getter、setter和deleter時,使用了相同的方法name()。現(xiàn)在,無論何時使用 p.name,它都會在內(nèi)部調(diào)用相應(yīng)的getter、setter和deleter。

分享到:
標(biāo)簽:屬性 property
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定