码迷,mamicode.com
首页 > 其他好文 > 详细

面向对象编程之property装饰器

时间:2020-04-09 19:06:00      阅读:96      评论:0      收藏:0      [点我收藏+]

标签:__init__   修改   tom   style   封装   return   外部   通过   面向对象编程   

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

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

标签:__init__   修改   tom   style   封装   return   外部   通过   面向对象编程   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!