property 有兩種使用方式
裝飾器方式官方幫助文件
property(fget=none, fset=none, fdel=none, doc=none) -> property attribute
decorators make defining new properties or modifying existing ones easy:
class
c(object):
@property
defx(self):
"i am the 'x' property."
return
self._x
@x.setter
defx(self, value):
self._x = value
@x.deleter
defx(self):
del self._x
注意:三個處理 _x 屬性的方法名要相同(引數不同)通過乙個例子來更好的理解裝飾器方式
class
money:
def__init__
(self):
self._money = 0
@property
defmoney
(self):
return self._money
@money.setter
defmoney
(self, value):
self._money = value
@money.deleter
defmoney
(self):
print('我沒錢了')
del self._money
dollar = money()
m = dollar.money # 獲取,dollar.money 在呼叫時沒有()
print(m)
dollar.money = 10000000
# 修改
m = dollar.money
print(m)
del dollar.money # 刪除
列印結果為
0
10000000
我沒錢了
該類的屬性有三種訪問方式,並分別對應三個被 @property、@方法名.setter、@方法名.deleter 修飾的方法,這三個方法對同乙個屬性:獲取,修改,刪除
類屬性方式
官方幫助文件
class
c(object):
defgetx
(self):
return self._x
defsetx
(self, value): self._x = value
defdelx
(self):
del self._x
x = property(getx, setx, delx, "i'm the 'x' property.")
通過乙個例子來更好的理解類屬性方式
class
money:
def__init__
(self):
self._money = 0
defget_money
(self):
return self._money
defsetter_money
(self, value):
self._money = value
defdeleter_money
(self):
print('我沒錢了')
del self._money
money = property(get_money, setter_money, deleter_money)
dollar = money()
m = dollar.money
print(m)
dollar.money = 100000000
m = dollar.money
print(m)
del dollar.money
列印結果
0
10000000
我沒錢了
python property 私有屬性
加有 變數名 的私有屬性直接訪問不了,用get.和set.方法,提供個介面進行訪問。property的使用 私有屬性,用來簡化訪問私有屬性,提供開放性介面,共外界訪問 class student def init self,name,age self.name name self.age age d...
Python property的理解和使用
重看狗書,看到對user表定義的時候有下面兩行 property def password self raise attributeerror password is not a readable attribute password.setter def password self,passwor...
python property 的理解以及它的坑
1 property就是既擁有set get方法的靈活性,又具有屬性直接賦值取值的簡便性 2 property的屬性名必須有下劃線,不然會報錯 3 在乙個方法前加上 property之後,你的方法就會自動擁有 get 直接取值的能力,以及可賦值的屬性 硬要理解的話,下面兩段 效果是一樣的 prope...