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 socket 超时设置 errno 10054
Jul 01 Python
Python文档生成工具pydoc使用介绍
Jun 02 Python
在Django框架中伪造捕捉到的URLconf值的方法
Jul 18 Python
举例讲解Python面向对象编程中类的继承
Jun 17 Python
Python的string模块中的Template类字符串模板用法
Jun 27 Python
Pyinstaller打包.py生成.exe的方法和报错总结
Apr 02 Python
python 应用之Pycharm 新建模板默认添加编码格式-作者-时间等信息【推荐】
Jun 17 Python
在Django中实现添加user到group并查看
Nov 18 Python
Python的缺点和劣势分析
Nov 19 Python
python jenkins 打包构建代码的示例代码
Nov 29 Python
利用python实现凯撒密码加解密功能
Mar 31 Python
详解pyinstaller生成exe的闪退问题解决方案
Jun 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
松下Panasonic RF-B65电路分析
2021/03/02 无线电
一个可以删除字符串中HTML标记的PHP函数
2006/10/09 PHP
解析PHP中的内存管理,PHP动态分配和释放内存
2013/06/28 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(四)
2014/06/23 PHP
朋友网关于QQ相关的PHP代码(研究QQ的绝佳资料)
2015/01/26 PHP
php技术实现加载字体并保存成图片
2015/07/27 PHP
JavaScript处理解析JSON数据过程详解
2015/09/11 Javascript
Angular 根据 service 的状态更新 directive
2016/04/03 Javascript
BootStrap栅格系统、表单样式与按钮样式源码解析
2017/01/20 Javascript
jquery 手势密码插件
2017/03/17 Javascript
JavaScript 基础表单验证示例(纯Js实现)
2017/07/20 Javascript
Nodejs实现文件上传的示例代码
2017/09/26 NodeJs
vue实现树形菜单效果
2018/03/19 Javascript
基于vue cli 通过命令行传参实现多环境配置
2018/07/12 Javascript
ionic4+angular7+cordova上传图片功能的实例代码
2019/06/19 Javascript
layui 点击重置按钮, select 并没有被重置的解决方法
2019/09/03 Javascript
json字符串对象转换代码实例
2019/09/28 Javascript
javascript实现简易的计算器
2020/01/17 Javascript
jQuery 移除事件的方法
2020/06/20 jQuery
js 数组当前行添加数据方法详解
2020/07/28 Javascript
vue-model实现简易计算器
2020/08/17 Javascript
再也不怕 JavaScript 报错了,怎么看怎么处理都在这儿
2020/12/09 Javascript
[42:23]完美世界DOTA2联赛PWL S3 Forest vs Rebirth 第二场 12.10
2020/12/13 DOTA
Python中比较特别的除法运算和幂运算介绍
2015/04/05 Python
Django基于ORM操作数据库的方法详解
2018/03/27 Python
浅析python的优势和不足之处
2018/11/20 Python
Python图像处理实现两幅图像合成一幅图像的方法【测试可用】
2019/01/04 Python
Python实现的大数据分析操作系统日志功能示例
2019/02/11 Python
Python玩转加密的技巧【推荐】
2019/05/13 Python
python二维码操作:对QRCode和MyQR入门详解
2019/06/24 Python
jupyter notebook 重装教程
2020/04/16 Python
留学自荐信
2013/10/10 职场文书
代领毕业证委托书
2014/08/02 职场文书
安全保证书格式
2015/02/28 职场文书
2015年维修工作总结
2015/04/25 职场文书
创业计划书之冷饮店
2019/09/27 职场文书