自学内容网 自学内容网

property函数的两种使用方法

1. 概要

property() 函数的作用是在新式类中返回属性值。

  • 通过存取方法定义的属性通常称为特性(property)
  • 让所有的属性看起来都一样

property函数: property(fget=None, fset=None, fdel=None, doc=None)

  • fget 是获取属性值的方法。
  • fset 是设置属性值的方法。
  • fdel 是删除属性值的方法。
  • doc 是属性描述信息。

2. property在新式类中返回属性值

提示:这里主要介绍使用类的属性访问类的私有变量

class MyClass(object):
    def __init__(self):
        self.__param = None
    def getParam(self):
        print("getParam: %s"%self.__param)
        return self.__param
    def setParam(self, value):
        self.__param = value
        print("setParam:%s"%self.__param)
    def delParam(self):
        print("delParam:%s"%self.__param)
        del self.__param
    param = property(getParam, setParam, delParam)

cls = MyClass()  # 实例化对象
cls.param = 10  # 设置
print("current param:%s"%cls.param) # 获取
del cls.param  # 删除

运行结果:

setParam:10
getParam: 10
current param:10
delParam:10

在访问对象属性param时,对应执行了property(getX,setX,delX)所指定的方向而做了一些额外的事情。

3.使用@property访问类的属性

提示:@property装饰器可以将python定义的函数当作属性来访问

class YourClass(object):
    def __init__(self):
        self.__param = None

    @property
    def param(self):
        print("getParam: %s" % self.__param)
        return self.__param

    @param.setter
    def param(self, value):
        self.__param = value
        print("setParam:%s" % self.__param)

    @param.deleter
    def param(self):
        print("delParam:%s" % self.__param)
        del self.__param


cls = YourClass()
cls.param = 10
print("current param:%s" % cls.param)  # 获取
del cls.param

输出结果:

setParam:10
getParam: 10
current param:10
delParam:10

YourClass的三个属性获取,设置,删除函数为同名函数。
此方法更加灵活、简单,在开发中经常使用。

3.技术小结

property函数的用途就是:不希望我的类中的某属性悄悄地被访问,赋值或修改。希望在被访问、修改、赋值时能得到一些通知。(可以访问计数,可以发修改警告等等)。


原文地址:https://blog.csdn.net/beauthy/article/details/142431485

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!