1、@property 內建裝飾器函式,把乙個方法呼叫方式變成屬性呼叫方式。(將乙個方法當成乙個屬性使用)。注意@property裝飾器只能在物件導向中使用。
2、訪問使用@property裝飾器裝飾的函式可以直接呼叫函式名
(會執行一段功能(函式)然後返回值)
3、@property 裝飾器只能修飾不帶引數的方法。
4、@property裝飾器修飾私有方法的getter和setter方法。和控制屬性的訪問許可權-唯讀。
from math import pi
class circle:
def __init__(self, r):
self.r = r
@property
def perimeter(self):
return 2 * pi * self.r
@property
def area(self):
return pi * self.r ** 2
c1 = circle(5)
print(c1.perimeter)
print(c1.area)
如上**所示,如果不使用@property的話,那麼print(c1.perimeter)就應該是print(c1.perimeter()),area同理。即,周長面積這種引數應該被當作變數來使用,而不是函式。
class person:
def __init__(self, name, age):
self.__name = name
self.__age = age # self.__age就是乙個私有屬性,物件就不能使用了
@property
def name(self):
return self.__name
@property
def age(self, age):
return self.__age
# @property修飾的方法名稱是xx,這裡就@xx.setter
# @age.setter是property的副產品
@age.setter
def age(self, age):
if age < 0 and age > 150:
print('不合法啊,superboy')
return
self.__age = age
def __str__(self):
msg = '姓名:{},年齡:{}'.format(self.__name, self.__age)
return msg
per = person('zs', 10)
print(per)
per.age = 16
print(per)
print(per.name)
輸出為:
姓名:zs,年齡:10
姓名:zs,年齡:16
zs
JS中Attribute和property的區別
在使用angular中的資料繫結時,發現對html屬性和dom屬性不是很清楚,順便屢屢清楚這二者的區別。attribute html屬性,書寫在標籤內的屬性,使用setattribute 和getattribute 進行設定和獲取。property dom屬性,html標籤對應的dom節點屬性,使用...
Python 今天抽空學習了 Property
1 property使方法像屬性一樣呼叫 property可以把乙個例項方法變成其同名屬性,以支援.號訪問,它亦可標記設定限制,加以規範 2 property成為屬性函式,可以對屬性賦值時做必要的檢查,比如在setter方法裡加過濾判斷條件。3 顯得相對簡潔一些,相比自定義的get和set方法,pr...
python中 python中的 與
這一部分首先要理解python記憶體機制,python中萬物皆物件。對於不可變物件,改變了原來的值,其別名 變數名 繫結到了新值上面,id肯定會改變 對於可變物件,操作改變了值,id肯定會變,而 是本地操作,其值原地修改 對於 號操作,可變物件和不可變物件呼叫的都是 add 操作 對於 號操作,可變...