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编程实现语音控制电脑
Apr 01 Python
如何在Python中编写并发程序
Feb 27 Python
python基于pyDes库实现des加密的方法
Apr 29 Python
Python工程师面试必备25条知识点
Jan 17 Python
python使用筛选法计算小于给定数字的所有素数
Mar 19 Python
python实现飞机大战
Sep 11 Python
pyqt弹出新对话框,以及关闭对话框获取数据的实例
Jun 18 Python
为什么从Python 3.6开始字典有序并效率更高
Jul 15 Python
简单了解python字符串前面加r,u的含义
Dec 26 Python
tensorflow实现在函数中用tf.Print输出中间值
Jan 21 Python
如何在keras中添加自己的优化器(如adam等)
Jun 19 Python
整理Python中常用的conda命令操作
Jun 15 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
解决GD中文乱码问题
2007/02/14 PHP
php轻松实现文件上传功能
2016/03/03 PHP
jQuery实现form表单reset按钮重置清空表单功能
2012/12/18 Javascript
利用jQuery实现可以编辑的表格
2014/05/26 Javascript
jQuery中[attribute*=value]选择器用法实例
2014/12/31 Javascript
每天一篇javascript学习小结(RegExp对象)
2015/11/17 Javascript
举例讲解如何判断JavaScript中对象的类型
2016/04/22 Javascript
Vue.js bootstrap前端实现分页和排序
2017/03/10 Javascript
jquery 手势密码插件
2017/03/17 Javascript
使用DataTable插件实现异步加载数据
2017/11/19 Javascript
微信小程序中换行空格(多个空格)写法详解
2018/07/10 Javascript
vue-video-player 通过自定义按钮组件实现全屏切换效果【推荐】
2018/08/29 Javascript
JQuery Ajax跨域调用和非跨域调用问题实例分析
2019/04/16 jQuery
JS sort方法基于数组对象属性值排序
2020/07/10 Javascript
在nuxt中使用路由重定向的实例
2020/11/06 Javascript
使用Python的Flask框架实现视频的流媒体传输
2015/03/31 Python
Python深度优先算法生成迷宫
2018/01/22 Python
Python2.7.10以上pip更新及其他包的安装教程
2018/06/12 Python
python之django母板页面的使用
2018/07/03 Python
使用Python和OpenCV检测图像中的物体并将物体裁剪下来
2019/10/30 Python
Python3实现mysql连接和数据框的形成(实例代码)
2020/01/17 Python
python实现滑雪游戏
2020/02/22 Python
Python全局变量与global关键字常见错误解决方案
2020/10/05 Python
Python求区间正整数内所有素数之和的方法实例
2020/10/13 Python
深入剖析webstorage[html5的本地数据处理]
2016/07/11 HTML / CSS
HTML5实现锚点时请使用id取代name
2013/09/06 HTML / CSS
外贸公司实习自我鉴定
2013/09/24 职场文书
在职研究生自我鉴定
2013/10/16 职场文书
电气技术员岗位职责
2013/11/19 职场文书
大课间活动制度
2014/01/18 职场文书
《植物妈妈有办法》教学反思
2014/02/25 职场文书
公司授权委托书范文
2014/09/21 职场文书
教师三严三实对照检查材料
2014/09/25 职场文书
预备党员个人总结
2015/02/14 职场文书
Oracle11g R2 安装教程完整版
2021/06/04 Oracle
Mysql数据库按时间点恢复实战记录
2021/06/30 MySQL