python 訪問器@property的使用方法


@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
     
    def getx(self):
        return self.__x
     
    def setx(self, value):
        self.__x = value
         
    def delx(self):
        del self.__x
         
    x = property(getx, setx, delx, 'set x property')
 
if __name__ == '__main__':
    c = Cls()
    c.x = 100
    y = c.x
    print("set & get y: %d" % y)
     
    del c.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
    def x(self):
        return self.__x
     
    @x.setter
    def x(self, value):
        self.__x = value
         
    @x.deleter
    def x(self):
        del self.__x
 
if __name__ == '__main__':
    c = Cls()
    c.x = 100
    y = c.x
    print("set & get y: %d" % y)
     
    del c.x
    print("del c.x & y: %d" % y)

 


運行結果:
set & get y: 100
del c.x & y: 100
說明: 同一屬性__x的三個函數名要相同。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM