Python @property装饰器原理解析


Posted in Python onJanuary 22, 2020

这篇文章主要介绍了Python @property装饰器原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

1.通过@property装饰器,可以直接通过方法名来访问方法,不需要在方法名后添加一对“()”小括号。

class Person:
  def __init__(self, name):
    self.__name = name
  @property
  def say(self):
    return self.__name
xioabai = Person("xiaobai")
#直接通过方法名来访问say方法
print("我的名字是:", xiaobai.say)
我的名字是: xiaobai

上面程序中,使用@property修饰了say()方法,这就使得该方法变成了name属性的getter方法。

2.使用setter装饰器,可以为say方法添加setter方法。

class Person:
  def __init__(self, name):
    self.__name = name
  @property
  def say(self):
    return self.__name
  @say.setter
  def say(self, value):
    self.__name = value
xiaobai = Person("xiaobai")
xiaobai.say = "xiaohei"
print("我的名字其实是:", xiaobai.say)
我的名字其实是: xiaohei

3.使用deleter装饰器来删除指定属性,可以为say方法添加deleter方法

class Person:
  def __init__(self, name):
    self.__name = name
  @property
  def say(self):
    return self.__name
  @say.setter
  def say(self, value):
    self.__name = value
  @say.deleter
  def say(self):
    self.__name = "xxx"
xiaobai = Person("xiaobai")
del xiaobai.say
print("我的名字其实是:", xiaobai.say)
我的名字其实是: xxx

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python复制文件代码实现
Dec 23 Python
整理Python最基本的操作字典的方法
Apr 24 Python
python使用htmllib分析网页内容的方法
May 08 Python
老生常谈Python基础之字符编码
Jun 14 Python
TensorFlow损失函数专题详解
Apr 26 Python
详解Django rest_framework实现RESTful API
May 24 Python
Python设计模式之模板方法模式实例详解
Jan 17 Python
处理Selenium3+python3定位鼠标悬停才显示的元素
Jul 31 Python
Python二次规划和线性规划使用实例
Dec 09 Python
pytorch 实现打印模型的参数值
Dec 30 Python
python tkinter之顶层菜单、弹出菜单实例
Mar 04 Python
使用K.function()调试keras操作
Jun 17 Python
Python底层封装实现方法详解
Jan 22 #Python
tensorboard实现同时显示训练曲线和测试曲线
Jan 21 #Python
使用tensorboard可视化loss和acc的实例
Jan 21 #Python
TensorFlow绘制loss/accuracy曲线的实例
Jan 21 #Python
NumPy统计函数的实现方法
Jan 21 #Python
TensorFlow实现打印每一层的输出
Jan 21 #Python
NumPy排序的实现
Jan 21 #Python
You might like
深入PHP购物车模块功能分析(函数讲解,附源码)
2013/06/25 PHP
ThinkPHP中RBAC类的四种用法分析
2014/11/24 PHP
PHP实现PDO操作mysql存储过程示例
2019/02/13 PHP
微信公众平台开发教程①获取用户Openid及个人信息图文详解
2019/04/10 PHP
JavaScript的目的分析
2007/01/05 Javascript
javascript 获取图片颜色
2009/04/05 Javascript
js判断输入是否为正整数、浮点数等数字的函数代码
2010/11/17 Javascript
jquery实现可拖动DIV自定义保存到数据的实例
2013/11/20 Javascript
js离开或刷新页面检测(且兼容FF,IE,Chrome)
2014/03/05 Javascript
Angularjs使用指令做表单校验的方法
2017/03/31 Javascript
jQuery模拟爆炸倒计时功能实例代码
2017/08/21 jQuery
Three.js利用orbit controls插件(轨道控制)控制模型交互动作详解
2017/09/25 Javascript
VueJs监听window.resize方法示例
2018/01/17 Javascript
Node.js 使用AngularJS的方法示例
2018/05/11 Javascript
微信小程序template模版的使用方法
2019/04/13 Javascript
vue 兄弟组件的信息传递的方法实例详解
2019/08/30 Javascript
vue中 this.$set的用法详解
2019/09/06 Javascript
vue使用Sass时报错问题的解决方法
2020/10/14 Javascript
详解Python中 __get__和__getattr__和__getattribute__的区别
2016/06/16 Python
Django渲染Markdown文章目录的方法示例
2019/01/02 Python
python利用递归方法实现求集合的幂集
2020/09/07 Python
纯CSS实现预加载动画效果
2017/09/06 HTML / CSS
万宝龙英国官网:Montblanc手表、书写工具、皮革和珠宝
2018/10/16 全球购物
台湾租车首选品牌:IWS艾维士租车
2019/05/03 全球购物
生物技术专业毕业生求职信范文
2013/12/14 职场文书
中学家长会邀请函
2014/01/17 职场文书
人事部岗位职责范本
2014/03/05 职场文书
cf战队收人广告词
2014/03/14 职场文书
活动总结书
2014/05/08 职场文书
消防标语大全
2014/06/07 职场文书
党员教师个人对照检查材料范文
2014/09/25 职场文书
先进党支部事迹材料
2014/12/24 职场文书
三八妇女节寄语
2015/02/27 职场文书
学长教您写论文:经验总结
2019/07/09 职场文书
MySQL Threads_running飙升与慢查询的相关问题解决
2021/05/08 MySQL
解决vue-router的beforeRouteUpdate不能触发
2022/04/14 Vue.js