美文网首页
1. Python3中property()函数学习

1. Python3中property()函数学习

作者: 闪电侠悟空 | 来源:发表于2017-07-05 18:13 被阅读0次

    Python是面向对象编程的语言,所以类属性及其(赋值、访问、删除、说明)是十分关键的元素。看到网上有人对这个函数的说明,感觉他们都讲的不透彻。下面我以《Python基础教程》9.5节的代码说明

    传统属性方法

    • 类定义
    class Rectangle():
        def __init__(self):
            self.height = 0
            self.width =0
        def setSize(self,size):
            self.height, self.width = size
        def getSize(self):
            return self.height,self.width
    #    size = property(getSize, setSize) #(注意:该句话注释了!!!)
    
    • 属性设置与访问
    myRect = Rectangle()
    myRect.height = 100 # 设置1:属性
    myRect.setSize(100,200)# 设置2:访问器方法
    height = myRect.height # 访问1: 属性
    height, width = myRect.getSize()# 访问2:访问器方法
    
    • 问题
    1. 如果我们需要使用一个新的描述属性(size = (height, width)),怎么办?重新定义self.size 和相应的访问器方法是可以的,但是原始编写的类基本上就废掉了,因为你要重新实现 size属性的 赋值、访问、删除、说明操作, 同时处理size,height, width的数据同步,想想都头疼。
    2. 实现这系列属性还有另外一种方法,那就是property函数。

    Property函数构造属性

    • 新类的定义(仅仅只多了一条语句
    class Rectangle():
        def __init__(self):
            self.height = 0
            self.width =0
        def setSize(self,size):
            self.height, self.width = size
        def getSize(self):
            return self.height, self.width
        size = property(getSize, setSize) #(注意:注释去掉了!!!)
    

    说明:

    1. 新的描述属性(size = (height, width))通过property函数间接产生了。可以通过(.size)设置和访问了。
    2. 语法是这样的:新属性=property(读取函数,设置函数,删除函数,文档函数)。如果没有指定设置函数,则该属性只可读,不可写。如果连读取函数都没有,则该属性不可读。
    • 属性设置与访问
    myRect = Rectangle()
    myRect.height = 100 # 设置1:属性
    myRect.setSize(100,200)# 设置2:访问器方法
    height = myRect.height # 访问1: 属性
    height, width = myRect.getSize()# 访问2:访问器方法
    myRect.size = (100,200) # 设置新的property函数产生的属性
    size = myRect.size     # 访问该属性
    

    相关文章

      网友评论

          本文标题:1. Python3中property()函数学习

          本文链接:https://www.haomeiwen.com/subject/ewiqhxtx.html