Python 基礎教程

Python 流程控制

Python 函數

Python 數據類型

Python 文件操作

Python 對象和類

Python 日期和時間

Python 高級知識

Python 參考手冊

Python property() 使用方法及示例

Python 內置函數

property()構造返回property屬性。

property()的語法為:

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

推薦閱讀: Python @property:如何使用它以及為什么?

property()參數

property()采用四個參數:

  • fget(可選) -用于獲取屬性值的函數。默認為None。

  • fset(可選) -用于設置屬性值的函數。默認為None。

  • fdel(可選) -用于刪除屬性值的函數。默認為None。

  • doc(可選) -一個字符串,其中包含該屬性的文檔(docstring)。默認為None。

property()返回值

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

  • 如果沒有給出參數,property()將返回一個基本屬性,該屬性不包含getter,setter或Deleter。

  • 如果未提供doc,property()則使用getter函數的docstring。

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

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

    def get_name(self):
        print('獲取名字:')
        return self._name

    def set_name(self, value):
        print('將名字設置為: ' + value)
        self._name = value

    def del_name(self):
        print('刪除名字')
        del self._name

    # 設置屬性使用get_name,set_name
    # 和 del_name 方法
    name = property(get_name, set_name, del_name, 'Name property')

p = Person('張三')
print(p.name)
p.name = '李四'
del p.name

輸出結果

獲取名字:
張三
將名字設置為: 李四
刪除名字

在此,_name用作存儲Person名稱的私有變量。

我們還設置:

  • get_name()是獲取人名的獲取方法,

  • 用setter方法set_name()設置人名的方法,

  • del_name()方法用來刪除人的名字。

現在,我們通過調用property()方法來設置一個新的屬性名。

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

示例2:使用@property裝飾器

property()可以使用Python裝飾器 @property來分配getter,setter和Deleter,而不是使用。

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

    @property
    def name(self):
        print('獲取名字:')
        return self._name

    @name.setter
    def name(self, value):
        print('設置名字為: ' + value)
        self._name = value

    @name.deleter
    def name(self):
        print('刪除名字')
        del self._name

p = Person('王麻子')
print('名字為:', p.name)
p.name = '李二'
del p.name

輸出結果

獲取名字:
名字為: 王麻子
設置名字為: 李二
刪除名字

在這里,property()我們沒有使用,而是使用了@property裝飾器。

首先,我們指定name()方法也是Person的屬性。通過使用@property程序中所示的getter方法,可以完成此操作。

接下來,我們使用屬性名稱來指定設置器和刪除器。

這是通過使用@name.settersetter方法和@name.deleterDeleter方法來完成的。

注意,我們使用了name()具有不同定義的相同方法來定義getter,setter和deleter。

現在,無論何時使用p.name,它都會在內部調用適當的getter,setter和Deleter,如方法內部顯示的打印輸出所示。

Python 內置函數

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清