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网络爬虫采集联想词示例
Feb 11 Python
Python3基础之输入和输出实例分析
Aug 18 Python
python下如何查询CS反恐精英的服务器信息
Jan 17 Python
Python栈算法的实现与简单应用示例
Nov 01 Python
python使用scrapy发送post请求的坑
Sep 04 Python
PyQt QListWidget修改列表项item的行高方法
Jun 20 Python
Flask框架中request、请求钩子、上下文用法分析
Jul 23 Python
VS2019+python3.7+opencv4.1+tensorflow1.13配置详解
Apr 16 Python
Python3爬虫关于代理池的维护详解
Jul 30 Python
python分布式爬虫中消息队列知识点详解
Nov 26 Python
python上下文管理器异常问题解决方法
Feb 07 Python
利用Python第三方库实现预测NBA比赛结果
Jun 21 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
Apache2中实现多网站域名绑定的实现方法
2011/06/01 PHP
PHP实现多进程并行操作的详解(可做守护进程)
2013/06/18 PHP
深入解读php中关于抽象(abstract)类和抽象方法的问题分析
2014/01/03 PHP
PHP基于php_imagick_st-Q8.dll实现JPG合成GIF图片的方法
2014/07/11 PHP
PHP获取网站中各文章的第一张图片的代码示例
2016/05/20 PHP
PHP中session跨子域的三种实现方法
2016/07/25 PHP
thinkphp5框架调用其它控制器方法 实现自定义跳转界面功能示例
2019/07/03 PHP
PHP判断当前使用的是什么浏览器(推荐)
2019/10/27 PHP
JS读取XML文件示例代码
2013/11/15 Javascript
JQuery对表格进行操作的常用技巧总结
2014/04/23 Javascript
JQuery弹出炫丽对话框的同时让背景变灰色
2014/05/22 Javascript
简介JavaScript中POSITIVE_INFINITY值的使用
2015/06/05 Javascript
详解js中Json的语法与格式
2016/11/22 Javascript
基于JavaScript实现移动端无限加载分页
2017/03/27 Javascript
JS仿QQ好友列表展开、收缩功能(第二篇)
2017/07/07 Javascript
微信小程序自定义select下拉选项框组件的实现代码
2018/08/28 Javascript
微信小程序下拉刷新PullDownRefresh的使用方法
2018/11/29 Javascript
在Angular中实现一个级联效果的下拉框的示例代码
2020/05/20 Javascript
Python遍历zip文件输出名称时出现乱码问题的解决方法
2015/04/08 Python
python中urlparse模块介绍与使用示例
2017/11/19 Python
python引用(import)某个模块提示没找到对应模块的解决方法
2019/01/19 Python
NumPy 数组使用大全
2019/04/25 Python
python 列表输出重复值以及对应的角标方法
2019/06/11 Python
关于Python 中的时间处理包datetime和arrow的方法详解
2020/03/19 Python
Python-jenkins 获取job构建信息方式
2020/05/12 Python
德国知名健康零食网上商店:Seeberger
2017/07/27 全球购物
美国购物网站:Clickhere2shop
2021/01/28 全球购物
加入学生会演讲稿
2014/04/24 职场文书
地质灾害防治方案
2014/05/14 职场文书
车间安全生产标语
2014/06/06 职场文书
如何写辞职书
2015/02/26 职场文书
蜗居观后感
2015/06/11 职场文书
如何创建一个创建MySQL数据库中的datetime类型
2022/03/21 MySQL
基于Apache Hudi在Google云构建数据湖平台的思路详解
2022/04/07 Servers
微软团队与 NASA 科学家和惠普企业(HPE)的工程师合作
2022/04/21 数码科技
聊聊配置 Nginx 访问与错误日志的问题
2022/05/25 Servers