@property 可以將python定義的函式「當做」屬性訪問,從而提供更加友好訪問方式,但是有時候setter/getter也是需要的
假設定義了乙個類cls,該類必須繼承自object類,有一私有變數__x
1. 第一種使用屬性的方法:
#!/usr/bin/env python
#-*- coding: utf-8 -*-
#blog.ithomer.net
class
cls(object):
def__init__
(self):
self.
__x =none
defgetx(self):
return self.__x
defsetx(self, value):
self.
__x =value
defdelx(self):
del self.__x
x = property(getx, setx, delx, '
set x property')
if__name__ == '
__main__':
c =cls()
c.x = 100y =c.x
print("
set & get y: %d
" %y)
delc.x
print("
del c.x & y: %d
" % y)
執行結果:
set & get y: 100
del c.x & y: 100
在該類中定義三個函式,分別用作賦值、取值、刪除變數
property函式原型為property(fget=none,fset=none,fdel=none,doc=none),上例根據自己定義相應的函式賦值即可。
2. 第二種方法(在2.6中新增)
同方法一,首先定義乙個類cls,該類必須繼承自object類,有一私有變數__x
?
classcls(object):
def__init__
(self):
self.
__x =none
@property
defx(self):
return self.__x
@x.setter
defx(self, value):
self.
__x =value
@x.deleter
defx(self):
del self.__x
if__name__ == '
__main__':
c =cls()
c.x = 100y =c.x
print("
set & get y: %d
" %y)
delc.x
print("
del c.x & y: %d
" % y)
執行結果:
set & get y: 100
del c.x & y: 100
說明: 同一屬性__x的三個函式名要相同。
一文帶你搞懂python中的property
通常我們在獲得變數的一些私有屬性時,必須通過方法來獲取私有屬性,並不能直接訪問 修改其數值的時候也是要通過方法去修改,這樣非常的不方便 所以python提供了一種方式,將呼叫方法的的形式轉變為訪問屬性,這樣使用非常方便 class student def init self 這是乙個私有屬性 sel...
訪問器的訪問修飾符 訪問器級別層次
在預設情況下,成員的倆個訪問器有和成員自身相同的訪問級別,也就是說,如果乙個屬性有public訪問級別,那麼它的倆個訪問器有和成員自身相同的訪問級別,對索引也一樣,當然也可以為倆個訪問器分配不同的訪問級別。1 僅當成員 屬性或者索引器 既有get訪問器也有set訪問器時,其訪問器才能有訪問修飾符 2...
屬性訪問器
synthesize result 表示建立該屬性的訪問器,這樣就可以直接訪問result屬性。在沒有新增屬性訪問器的時候,在main中這樣實現 myclass myclass myclass alloc init myclass setresult hello myclass shixian 新增...