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使用Queue在多个子进程间交换数据的方法
Apr 18 Python
Python随机生成带特殊字符的密码
Mar 02 Python
用Python写一个无界面的2048小游戏
May 24 Python
Python读取图片属性信息的实现方法
Sep 11 Python
Python实现全角半角字符互转的方法
Nov 28 Python
python中map()函数的使用方法示例
Sep 29 Python
python装饰器实例大详解
Oct 25 Python
Pycharm取消py脚本中SQL识别的方法
Nov 29 Python
python无限生成不重复(字母,数字,字符)组合的方法
Dec 04 Python
Python 文本文件内容批量抽取实例
Dec 10 Python
Python第三方库的几种安装方式(小结)
Apr 03 Python
Scrapy模拟登录赶集网的实现代码
Jul 07 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
mac下使用brew配置环境的步骤分享
2011/05/23 PHP
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
2015/04/03 PHP
Session 失效的原因汇总及解决丢失办法
2015/09/30 PHP
phpcmsv9.0任意文件上传漏洞解析
2020/10/20 PHP
javascript 数据类型转换(parseInt,parseFloat)
2010/07/20 Javascript
Jquery知识点三 jquery表单对象操作
2011/01/17 Javascript
jquery radio 操作代码
2011/03/16 Javascript
jQuery EasyUI API 中文文档 - NumberBox数字框
2011/10/13 Javascript
JS操作数据库的实例代码
2013/10/17 Javascript
Javascript delete 引用类型对象
2013/11/01 Javascript
jQuery操作cookie方法实例教程
2014/11/25 Javascript
JavaScript中split() 使用方法汇总
2015/04/17 Javascript
ionic由于使用了header和subheader导致被遮挡的问题的两种解决方法
2016/09/22 Javascript
js实现返回顶部效果
2017/03/10 Javascript
JavaScript fetch接口案例解析
2018/08/30 Javascript
vue.js的双向数据绑定Object.defineProperty方法的神奇之处
2019/01/18 Javascript
nodejs同步调用获取mysql数据时遇到的大坑
2019/03/02 NodeJs
vue实现信息管理系统
2020/05/30 Javascript
echarts实现获取datazoom的起始值(包括x轴和y轴)
2020/07/20 Javascript
python根据路径导入模块的方法
2014/09/30 Python
如何高效使用Python字典的方法详解
2017/08/31 Python
Python实现统计给定字符串中重复模式最高子串功能示例
2018/05/16 Python
python用opencv批量截取图像指定区域的方法
2019/01/24 Python
Python3实现的简单三级菜单功能示例
2019/03/12 Python
Django 大文件下载实现过程解析
2019/08/01 Python
解决python web项目意外关闭,但占用端口的问题
2019/12/17 Python
python不使用for计算两组、多个矩形两两间的iou方式
2020/01/18 Python
Python 日期与时间转换的方法
2020/08/01 Python
HTML5中indexedDB 数据库的使用实例
2017/05/11 HTML / CSS
Origins悦木之源英国官网:雅诗兰黛集团高端植物护肤品牌
2017/11/06 全球购物
CHRONEXT英国:您的首选奢华腕表目的地
2020/03/30 全球购物
介绍一下Java的安全机制
2012/06/28 面试题
科研课题实施方案
2014/03/18 职场文书
剪彩仪式主持词
2014/03/19 职场文书
软件售后服务方案
2014/05/29 职场文书
爱岗敬业事迹材料
2014/12/24 职场文书