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中的各种装饰器详解
Apr 11 Python
Python中字典(dict)合并的四种方法总结
Aug 10 Python
Python数据分析之获取双色球历史信息的方法示例
Feb 03 Python
20个常用Python运维库和模块
Feb 12 Python
python2与python3中关于对NaN类型数据的判断和转换方法
Oct 30 Python
Python中print和return的作用及区别解析
May 05 Python
python 计算数据偏差和峰度的方法
Jun 29 Python
Python3中的最大整数和最大浮点数实例
Jul 09 Python
Python使用for生成列表实现过程解析
Sep 22 Python
Python根据字典的值查询出对应的键的方法
Sep 30 Python
scrapy-splash简单使用详解
Feb 21 Python
python利用xpath爬取网上数据并存储到django模型中
Feb 26 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简单实现解析xml为数组的方法
2018/05/02 PHP
PHP利用DWZ.CN服务生成短网址
2019/08/11 PHP
不错的JS中变量相关的细节分析
2007/08/13 Javascript
JQuery this 和 $(this) 的区别
2009/08/23 Javascript
Moment.js 不容错过的超棒Javascript日期处理类库
2012/04/15 Javascript
解决jquery的datepicker的本地化以及Today问题
2012/05/23 Javascript
js 将json字符串转换为json对象的方法解析
2013/11/13 Javascript
jquery操作下拉列表、文本框、复选框、单选框集合(收藏)
2014/01/08 Javascript
jquery1.10给新增元素绑定事件的方法
2014/03/06 Javascript
实例分析js和C#中使用正则表达式匹配a标签
2014/11/26 Javascript
浅谈JavaScript函数的四种存在形态
2016/06/08 Javascript
jquery mobile实现可折叠的导航按钮
2017/03/11 Javascript
vue结合axios与后端进行ajax交互的方法
2018/07/06 Javascript
使用react render props实现倒计时的示例代码
2018/12/06 Javascript
微信小程序图片左右摆动效果详解
2019/07/13 Javascript
微信小程序实现左侧滑栏过程解析
2019/08/26 Javascript
优雅的使用javascript递归画一棵结构树示例代码
2019/09/22 Javascript
JS实现手风琴特效
2020/11/08 Javascript
[01:03:22]LGD vs OG 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
Python实例分享:快速查找出被挂马的文件
2014/06/08 Python
Python3下错误AttributeError: ‘dict’ object has no attribute’iteritems‘的分析与解决
2017/07/06 Python
Python使用内置json模块解析json格式数据的方法
2017/07/20 Python
Python金融数据可视化汇总
2017/11/17 Python
Numpy array数据的增、删、改、查实例
2018/06/04 Python
查找python项目依赖并生成requirements.txt的方法
2018/07/10 Python
使用django的objects.filter()方法匹配多个关键字的方法
2019/07/18 Python
Python之指数与E记法的区别详解
2019/11/21 Python
Pytorch mask_select 函数的用法详解
2020/02/18 Python
在spyder IPython console中,运行代码加入参数的实例
2020/04/20 Python
美国正宗设计师眼镜在线零售商:EYEZZ
2019/03/23 全球购物
学生发电厂实习自我鉴定
2013/09/22 职场文书
医院实习接收函
2014/01/12 职场文书
代理协议书
2014/04/22 职场文书
质量负责人岗位职责
2015/02/15 职场文书
公司行政管理制度范本
2015/08/05 职场文书
校园运动会广播稿
2015/08/19 职场文书