python 訪問器 property的使用方法

2022-02-17 13:17:45 字數 1625 閱讀 8906

@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

?

class

cls(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 新增...