內置函數屬性()有助于定義 Python 類屬性。它為實例屬性提供了一個接口,并提供了與 java 和 c#相同的屬性。
**property(fget=None, fset=None, fdel=None, doc=None)** #where all arguments are optional
屬性()參數:
接受四個可選參數。如果在沒有任何參數的情況下調用property()
,它將返回一個基屬性。
參數 | 描述 | 必需/可選 |
---|---|---|
FGD!FGD | 用于獲取屬性值的函數。默認為無。 | 可選擇的 |
fset | 用于設置屬性值的函數。默認為無。 | 可選擇的 |
-貿易 | 用于刪除屬性值的函數。默認為無。 | 可選擇的 |
文件 | 包含屬性文檔(docstring)的字符串。默認為無。 | 可選擇的 |
屬性()返回值
如果未提供參數 doc,則property()
將采用 getter 函數的 docstring。
| 投入 | 返回值 | | if 參數 | 屬性屬性 |
Python 中property()
方法的示例
示例 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
注意:現在我們通過調用property()
方法設置一個新的屬性屬性名。如程序中所示,通過方法內部的打印輸出,引用 p.name 在內部調用property()
作為獲取器,set_name()
作為設置器,set_name()
作為刪除器。
示例 2:使用@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