property 属性


# property 属性

# 什么是 property 属性

对象中的某个函数,可以通过 对象.xxxx 的方式调用

作用

  • 使用 property 来创建只读属性
  • property 会将方法转换为相同名称的只读属性,可以与所定义的属性配合使用,这样可以防止属性被修改

# 为什么要使用 property 属性

  • 调用函数方便
  • 防止属性被随意修改

# 使用方式

# @property 装饰器

class Basic:
    def __init__(self):
        self.__name = "alex"
    @property
    def get_name(self):
        return self.__name

    @get_name.setter
    def get_name(self,value):
        self.__name = value

if __name__ == '__main__':
    b = Basic()
    print(b.get_name)
    b.get_name = "hello"
    print(b.get_name)
    
    
结果:
alex
hello
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

注意

  • @get_name.setter 只能在新式类(Python 3)中使用
  • 新式类中设置 property 属性的值,必须使用 @get_name.setter 修饰
  • @property@get_name.setter 修饰的函数名必须相同
  • @property 修饰的函数必须在 @get_name.setter 修饰的函数前

# property() 函数

class Pepole:

    def __init__(self):
        self.age = 18

    def set_setter(self,value):
        if value > 100:
            raise ValueError
        if value <= 0:
            raise ValueError
        self.age = value

    def get_setter(self):
        return self.age

    BAP = property(get_setter,set_setter)

if __name__ == '__main__':
    B = Pepole()
    print(B.BAP)
    B.set_setter(80)
    print(B.BAP)

结果:
18
80
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

注意

property() 函数中的参数分别是:

  • 第一个参数是方法名,调用 实例.属性 时自动执行的方法

  • 第二个参数是方法名,调用 实例.属性 = XXX 时自动执行的方法

  • 第三个参数是方法名,调用 del 实例.属性 时自动执行的方法

  • 第四个参数是字符串,调用 实例.属性 .__doc__ 时的描述信息

(完)