首页 > 其他 > 详细

面向对象编程之property装饰器

时间:2020-04-09 19:03:43      阅读:52      评论:0      收藏:0      [点我收藏+]

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

  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装饰器

原文:https://www.cnblogs.com/caoyu080202201/p/12668902.html

(1)
(1)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!