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 相关文章推荐
Tensorflow 自带可视化Tensorboard使用方法(附项目代码)
Feb 10 Python
使用Django开发简单接口实现文章增删改查
May 09 Python
Python中新式类与经典类的区别详析
Jul 10 Python
弄懂这56个Python使用技巧(轻松掌握Python高效开发)
Sep 18 Python
django框架创建应用操作示例
Sep 26 Python
pytorch制作自己的LMDB数据操作示例
Dec 18 Python
python内打印变量之%和f的实例
Feb 19 Python
Python动态强类型解释型语言原理解析
Mar 25 Python
Python使用plt.boxplot() 参数绘制箱线图
Jun 04 Python
Windows 平台做 Python 开发的最佳组合(推荐)
Jul 27 Python
Python判断变量是否是None写法代码实例
Oct 09 Python
python 还原梯度下降算法实现一维线性回归
Oct 22 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判断浏览器的类型和语言的函数代码
2013/02/28 PHP
magento后台无法登录解决办法的两种方法
2016/12/09 PHP
PHP中strtr与str_replace函数运行性能简单测试示例
2019/06/22 PHP
PHP底层运行机制与工作原理详解
2020/07/31 PHP
在html页面中包含共享页面的方法
2008/10/24 Javascript
JS 参数传递的实际应用代码分析
2009/09/13 Javascript
javascript五图轮播切换实用版
2012/08/17 Javascript
jquery easyui使用心得
2014/07/07 Javascript
jQuery中Ajax的load方法详解
2015/01/14 Javascript
深入理解JavaScript系列(30):设计模式之外观模式详解
2015/03/03 Javascript
jQuery 1.9.1源码分析系列(十五)动画处理之缓动动画核心Tween
2015/12/03 Javascript
JS 拦截全局ajax请求实例解析
2016/11/29 Javascript
angularJS模态框$modal实例代码
2017/05/27 Javascript
使用Node.js搭建静态资源服务详细教程
2017/08/02 Javascript
关于webpack2和模块打包的新手指南(小结)
2017/08/07 Javascript
Vue组件实例间的直接访问实现代码
2017/08/20 Javascript
vue-cli 组件的导入与使用教程详解
2018/04/11 Javascript
解决layui中table异步数据请求不支持自定义返回数据格式的问题
2018/08/19 Javascript
脚手架vue-cli工程webpack的作用和特点
2018/09/29 Javascript
重学 JS:为啥 await 不能用在 forEach 中详解
2019/04/15 Javascript
实例解析Python设计模式编程之桥接模式的运用
2016/03/02 Python
Python对列表去重的多种方法(四种方法)
2017/12/05 Python
python实现简单名片管理系统
2018/11/30 Python
详解CSS3 rem(设置字体大小) 教程
2017/11/21 HTML / CSS
使用Html5中的cavas画一面国旗
2019/09/25 HTML / CSS
仓库保管员岗位职责
2013/12/20 职场文书
如何写一份好的自荐信
2014/01/02 职场文书
心理健康教育制度
2014/01/27 职场文书
顶碗少年教学反思
2014/02/21 职场文书
2015社区健康教育工作总结
2015/05/20 职场文书
美丽的大脚观后感
2015/06/03 职场文书
2016年员工年度考核评语
2015/12/02 职场文书
nginx配置proxy_pass中url末尾带/与不带/的区别详解
2021/03/31 Servers
深入解读Java三大集合之map list set的用法
2021/11/11 Java/Android
详解NumPy中的线性关系与数据修剪压缩
2022/05/25 Python
JS开发前端团队展示控制器来为成员引流
2022/08/14 Javascript