庄泽波の博客

好记性不如烂笔头

property属性[Python]

一、property解释

  根据文档资料解释

property([fget[, fset[, fdel[, doc]]]])
Return a property attribute for new-style classes (classes that derive from object)

  使用这个内建函数时,类必须继承object,才有效。

  property有可选参数fget, fset, fdel, doc。fget是获取值函数,fset是设置函数值,fdel是删除函数,doc文档说明。

二、例子

class C(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, '')

c = C()
c.x = 1
print c.x
del c.x

另外一种表达方式,property作为一种装饰器使用:

class Parrot(object):
    def __init__(self):
        self._voltage = 10000

    @property
    def voltage(self):
        return self._voltage

    @voltage.setter
    def voltage(self, value):
        self._voltage = value

    @voltage.deleter
    def voltage(self):
        del self._voltage

p = Parrot()
print p.voltage
p.voltage = 1
del p.voltage

property函数使用对类属性的读取更简洁,隐藏了变量,保证了数据的安全。

posted on 2014-07-29 19:36  庄泽波  阅读(222)  评论(0编辑  收藏  举报

导航