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益智游戏计算汉诺塔问题示例
Mar 05 Python
Python原始字符串(raw strings)用法实例
Oct 13 Python
详解Python中类的定义与使用
Apr 11 Python
python爬虫入门教程--HTML文本的解析库BeautifulSoup(四)
May 25 Python
Python简单定义与使用字典dict的方法示例
Jul 25 Python
python自动登录12306并自动点击验证码完成登录的实现源代码
Apr 25 Python
详解django自定义中间件处理
Nov 21 Python
在python带权重的列表中随机取值的方法
Jan 23 Python
Python GUI学习之登录系统界面篇
Aug 21 Python
python开发实例之Python的Twisted框架中Deferred对象的详细用法与实例
Mar 19 Python
Appium+Python实现简单的自动化登录测试的实现
Jan 26 Python
python APScheduler执行定时任务介绍
Apr 19 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优化那些事(经验分享)
2014/11/27 PHP
PHP实现会员账号单唯一登录的方法分析
2019/03/07 PHP
会自动逐行上升的文本框
2006/06/30 Javascript
双击滚屏-常用推荐
2006/11/29 Javascript
javascript判断是手机还是电脑访问网页的简单实例分享
2014/06/03 Javascript
基于jQuery Bar Indicator 插件实现进度条展示效果
2015/09/30 Javascript
js实现简单的验证码
2015/12/25 Javascript
Javascript字符串拼接小技巧(推荐)
2016/06/02 Javascript
jQuery 更改checkbox的状态,无效的解决方法
2016/07/22 Javascript
JavaScript中日常收集常见的10种错误(推荐)
2017/01/08 Javascript
jQuery使用DataTable实现删除数据后重新加载功能
2017/02/27 Javascript
浅谈angular2的http请求返回结果的subcribe注意事项
2017/03/01 Javascript
vue点击input弹出带搜索键盘并监听该元素的方法
2018/08/25 Javascript
利用Vue实现一个markdown编辑器实例代码
2019/05/19 Javascript
在vue和element-ui的table中实现分页复选功能
2019/12/04 Javascript
JavaScript组合设计模式--改进引入案例分析
2020/05/23 Javascript
python目录与文件名操作例子
2016/08/28 Python
python3 图片referer防盗链的实现方法
2018/03/12 Python
python读取和保存视频文件
2018/04/16 Python
python3.x实现发送邮件功能
2018/05/22 Python
python3+selenium实现126邮箱登陆并发送邮件功能
2019/01/23 Python
python实现文件的分割与合并
2019/08/29 Python
使用Matplotlib绘制不同颜色的带箭头的线实例
2020/04/17 Python
南非最大的花卉和送礼服务:NetFlorist
2017/09/13 全球购物
一些.net面试题
2014/10/06 面试题
应届电子商务毕业自荐书范文
2014/02/11 职场文书
家长通知书家长评语
2014/04/17 职场文书
竞赛口号大全
2014/06/16 职场文书
文明工地标语
2014/06/16 职场文书
党建工作整改措施
2014/10/28 职场文书
三孔导游词
2015/02/05 职场文书
老公婚前保证书
2015/02/28 职场文书
宾馆前台接待岗位职责
2015/04/02 职场文书
2015年小学数学教师个人工作总结
2015/05/25 职场文书
杨善洲观后感
2015/06/04 职场文书
2017年大学生寒假社会实践活动总结
2016/04/06 职场文书