python property 的詳細使用方法

2021-08-20 09:11:59 字數 2226 閱讀 5436

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...