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 相关文章推荐
pycharm 使用心得(五)断点调试
Jun 06 Python
用Python编写一个简单的俄罗斯方块游戏的教程
Apr 03 Python
Python中的ctime()方法使用教程
May 22 Python
Python实现的径向基(RBF)神经网络示例
Feb 06 Python
python3 读写文件换行符的方法
Apr 09 Python
Python实现的简单排列组合算法示例
Jul 04 Python
Python2和Python3的共存和切换使用
Apr 12 Python
基于MATLAB和Python实现MFCC特征参数提取
Aug 13 Python
使用opencv中匹配点对的坐标提取方式
Jun 04 Python
python中get和post有什么区别
Jun 19 Python
Ubuntu配置Pytorch on Graph (PoG)环境过程图解
Nov 19 Python
Python爬虫如何破解JS加密的Cookie
Nov 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
smarty模板中使用get、post、request、cookies、session变量的方法
2014/04/24 PHP
php中file_get_contents与curl性能比较分析
2014/11/08 PHP
php实现指定字符串中查找子字符串的方法
2015/03/17 PHP
thinkPHP js文件中U方法不被解析问题的解决方法
2016/12/05 PHP
解决PHP curl或file_get_contents下载图片损坏或无法打开的问题
2019/10/11 PHP
php解析非标准json、非规范json的方式实例
2020/12/10 PHP
深入理解JavaScript系列(8) S.O.L.I.D五大原则之里氏替换原则LSP
2012/01/15 Javascript
滚动图片效果 jquery实现回旋滚动效果
2013/01/08 Javascript
javascript打印输出json实例
2013/11/11 Javascript
利用了jquery的ajax实现二级联互动菜单
2013/12/02 Javascript
解析Javascript小括号“()”的多义性
2013/12/03 Javascript
代码触发js事件(click、change)示例应用
2013/12/13 Javascript
JS实现DIV容器赋值的方法
2015/12/14 Javascript
常用的JQuery函数及功能小结
2016/03/24 Javascript
javascript的列表切换【实现代码】
2016/05/03 Javascript
jquery代码规范让代码越来越好看
2017/02/03 Javascript
利用node.js如何搭建一个简易的即时响应服务器
2017/05/28 Javascript
AngularJS实现的省市二级联动功能示例【可对选项实现增删】
2017/10/26 Javascript
这应该是最详细的响应式系统讲解了
2019/07/22 Javascript
使用JavaScript通过前端发送电子邮件
2020/05/22 Javascript
JS寄快递地址智能解析的实现代码
2020/07/16 Javascript
Python导出数据到Excel可读取的CSV文件的方法
2015/05/12 Python
Python中操作mysql的pymysql模块详解
2016/09/13 Python
python anaconda 安装 环境变量 升级 以及特殊库安装的方法
2017/06/21 Python
python3利用tcp实现文件夹远程传输
2018/07/28 Python
Python中请不要再用re.compile了
2019/06/30 Python
python如何编写类似nmap的扫描工具
2020/11/06 Python
服装创业计划书范文
2014/02/05 职场文书
安全生产目标责任书
2014/04/14 职场文书
宪法宣传周工作方案
2014/05/26 职场文书
计划生育标语
2014/06/23 职场文书
稽核岗位职责范本
2015/04/13 职场文书
行政诉讼答辩状
2015/05/21 职场文书
python实战之用emoji表情生成文字
2021/05/08 Python
HTML5来实现本地文件读取和写入的实现方法
2021/05/25 HTML / CSS
python基础之模块的导入
2021/10/24 Python