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中的测试模块unittest和doctest的使用教程
Apr 14 Python
python如何使用正则表达式的前向、后向搜索及前向搜索否定模式详解
Nov 08 Python
浅谈flask中的before_request与after_request
Jan 20 Python
python 3.7.0 下pillow安装方法
Aug 27 Python
使用Python完成15位18位身份证的互转功能
Nov 06 Python
python list数据等间隔抽取并新建list存储的例子
Nov 27 Python
OpenCV哈里斯(Harris)角点检测的实现
Jan 15 Python
python使用python-pptx删除ppt某页实例
Feb 14 Python
Python爬虫程序架构和运行流程原理解析
Mar 09 Python
DataFrame.groupby()所见的各种用法详解
Jun 14 Python
Python基于字典实现switch case函数调用
Jul 22 Python
python中mongodb包操作数据库
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 mkdir()定义和用法
2009/01/14 PHP
一个PHP的String类代码
2010/04/20 PHP
PHP实现的交通银行网银在线支付接口ECSHOP插件和使用例子
2014/05/10 PHP
PHP生成静态HTML文档实现代码
2016/06/23 PHP
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
2018/06/16 PHP
Laravel中的chunk组块结果集处理与注意问题
2018/08/15 PHP
IE8 浏览器Cookie的处理
2009/01/31 Javascript
Jquery 1.42 checkbox 全选和反选代码
2010/03/27 Javascript
Jquery常用技巧收集整理篇
2010/11/14 Javascript
常用Extjs工具:Extjs.util.Format使用方法
2012/03/22 Javascript
JavaScript使用focus()设置焦点失败的解决方法
2014/09/03 Javascript
AngularJS 输入验证详解及实例代码
2016/07/28 Javascript
利用select实现年月日三级联动的日期选择效果【推荐】
2016/12/13 Javascript
JS简单实现获取元素的封装操作示例
2017/04/07 Javascript
详解Node.js利用node-git-server快速搭建git服务器
2017/09/27 Javascript
vue自定义移动端touch事件之点击、滑动、长按事件
2018/07/10 Javascript
使用JavaScript实现node.js中的path.join方法
2018/08/12 Javascript
vue使用vuex实现首页导航切换不同路由的方法
2019/05/08 Javascript
layer弹出层倒计时关闭的实现方法
2019/09/27 Javascript
python爬取足球直播吧五大联赛积分榜
2018/06/13 Python
numpy返回array中元素的index方法
2018/06/27 Python
Python3实现的判断回文链表算法示例
2019/03/08 Python
django中使用Celery 布式任务队列过程详解
2019/07/29 Python
python3.7添加dlib模块的方法
2020/07/01 Python
Python filter过滤器原理及实例应用
2020/08/18 Python
python实现计算图形面积
2021/02/22 Python
详解CSS3的perspective属性设置3D变换距离的方法
2016/05/23 HTML / CSS
Expedia加拿大官方网站:加拿大最大的在线旅游提供商
2017/12/31 全球购物
经典c++面试题五
2014/12/17 面试题
三维科技面试题
2013/07/27 面试题
大学生军训广播稿
2014/01/24 职场文书
科长个人四风问题整改措施思想汇报
2014/10/13 职场文书
酒店人事专员岗位职责
2015/04/07 职场文书
老干部座谈会主持词
2015/07/03 职场文书
画错魏国疆域啦!《派对咖孔明》动画因作画失误于官网致歉
2022/04/07 日漫
windows安装 redis 6.2.6最新步骤详解
2022/04/26 Redis