面向对象编程之property装饰器

Posted caoyu080202201

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象编程之property装饰器相关的知识,希望对你有一定的参考价值。

一、与函数装饰器的相似点

  1、都是可调用对象

  2、在不修改装饰对象的源代码和调用方式的前提下,添加了新功能

二、property装饰器的独特用法:不管property装饰器新增的是什么功能,结果都是给装饰对象伪造了了一个数据属性。

三、具体用法:将对象数据属性的查/改/删的操作按照,封装===》定义接口===》伪装接口,的顺序装饰,最后的结果,使用者看来似乎还是直接对对象数据属性的操作方法,其实已被接口内的功能进行了限制。

class Human:
    def __init__(self, name):
        self.__name = name  # 隐藏了 name,外部无法直接通过 .name 访问
    @property
    def name(self):
        return self.__name
    @name.setter
    def name(self, new_name):
        self.__name = new_name
    @name.deleter
    def name(self):
        print(不可删除)
human_obj_1 = Human(tom)
print(human_obj_1.name)  # 结果为 tom
human_obj_1.name = jan
print(human_obj_1.name)  # 结果为 jan
del human_obj_1.name  # 抛出提示 不可删除
print(human_obj_1.name)  # 结果为 jan

 

以上是关于面向对象编程之property装饰器的主要内容,如果未能解决你的问题,请参考以下文章

Python面向对象编程第18篇 属性装饰器

Python面向对象编程第18篇 属性装饰器

面向对象之封装 及@property装饰器使用

Python 面向对象 之 @property

Python入门-6面向对象编程:06私有属性和私有方法(实现封装)-@property装饰器-get和set方法-总结

python面向对象:组合封装property装饰器多态