亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.430618.com 】, 免友鏈快審服務(50元/站),

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

大家好,我是大爆炸

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

property()構造函數返回property屬性。其語法是:

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

property()參數:

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

property()返回值:

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

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

示例1:使用getter、setter和deleter創建屬性

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

結果:

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

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

我們還設置:

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

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

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

示例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來實現的。
  2. 接下來,使用屬性名來指定setter和deleter。這是通過使用@name完成的。@name.setter用于setter方法,@name.deleter用于deleter方法。

在定義getter、setter和deleter時,使用了相同的方法name()?,F在,無論何時使用 p.name,它都會在內部調用相應的getter、setter和deleter。

分享到:
標簽:屬性 property
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

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

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定