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中的装饰器用法详解
Jan 14 Python
python使用WMI检测windows系统信息、硬盘信息、网卡信息的方法
May 15 Python
用xpath获取指定标签下的所有text的实例
Jan 02 Python
pytorch 自定义数据集加载方法
Aug 18 Python
用Pytorch训练CNN(数据集MNIST,使用GPU的方法)
Aug 19 Python
详解基于python-django框架的支付宝支付案例
Sep 23 Python
python二维键值数组生成转json的例子
Dec 06 Python
python3实现往mysql中插入datetime类型的数据
Mar 02 Python
pycharm通过anaconda安装pyqt5的教程
Mar 24 Python
Python应用实现双指数函数及拟合代码实例
Jun 19 Python
微软开源最强Python自动化神器Playwright(不用写一行代码)
Jan 05 Python
教你怎么用python爬取爱奇艺热门电影
May 20 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 auth_http类库进行身份效验
2009/03/19 PHP
php数组函数序列之array_values() 获取数组元素值的函数与方法
2011/10/30 PHP
Laravel 中使用 Vue.js 实现基于 Ajax 的表单提交错误验证操作
2017/06/30 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
2020/02/21 PHP
phpcmsv9.0任意文件上传漏洞解析
2020/10/20 PHP
js对象的比较
2011/02/26 Javascript
jquery中each遍历对象和数组示例
2014/08/05 Javascript
jQuery Ajax使用实例
2015/04/16 Javascript
javascript实现全角转半角的方法
2016/01/23 Javascript
分分钟玩转Vue.js组件
2016/10/25 Javascript
移动适配的几种方案(三种方案)
2016/11/25 Javascript
原生JavaScript实现的简单省市县三级联动功能示例
2017/05/27 Javascript
详解vue几种主动刷新的方法总结
2019/02/19 Javascript
在vue+element ui框架里实现lodash的debounce防抖
2019/11/13 Javascript
vue.js实现简单购物车功能
2020/05/30 Javascript
ant-design-vue 时间选择器赋值默认时间的操作
2020/10/27 Javascript
在antd Form表单中select设置初始值操作
2020/11/02 Javascript
[06:30]DOTA2英雄梦之声_第15期_死亡先知
2014/06/21 DOTA
Python线程创建和终止实例代码
2018/01/20 Python
Django 限制用户访问频率的中间件的实现
2018/08/23 Python
Python之时间和日期使用小结
2019/02/14 Python
Python实现将HTML转成PDF的方法分析
2019/05/04 Python
Python完成哈夫曼树编码过程及原理详解
2019/07/29 Python
Numpy数组array和矩阵matrix转换方法
2019/08/05 Python
Python基础类继承重写实现原理解析
2020/04/03 Python
Django高并发负载均衡实现原理详解
2020/04/04 Python
吃透移动端 Html5 响应式布局
2019/12/16 HTML / CSS
Chain Reaction Cycles俄罗斯:世界上最大的在线自行车商店
2019/08/27 全球购物
北京麒麟网信息技术有限公司网络游戏测试面试题
2013/09/28 面试题
分别介绍一下Session Bean和Entity Bean
2015/03/13 面试题
解决python 输出到csv 出现多空行的情况
2021/03/24 Python
环境科学专业大学生自荐信格式
2013/09/21 职场文书
工程管理专业个人求职信范文
2013/12/07 职场文书
政治学专业毕业生求职信
2014/08/11 职场文书
毕业生评语大全
2015/01/04 职场文书
夫妻吵架保证书
2015/05/08 职场文书