ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

面向对象编程之property装饰器

2020-04-09 19:01:11  阅读:222  来源: 互联网

标签:obj 面向对象编程 self human print property 装饰 name


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

  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

 

标签:obj,面向对象编程,self,human,print,property,装饰,name
来源: https://www.cnblogs.com/caoyu080202201/p/12668902.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有