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抓取并保存html页面时乱码问题的解决方法
Jul 01 Python
Python编程之列表操作实例详解【创建、使用、更新、删除】
Jul 22 Python
TensorFlow实现简单卷积神经网络
May 24 Python
python中使用print输出中文的方法
Jul 16 Python
Selenium控制浏览器常见操作示例
Aug 13 Python
详解Numpy数组转置的三种方法T、transpose、swapaxes
May 27 Python
Python内置random模块生成随机数的方法
May 31 Python
对django后台admin下拉框进行过滤的实例
Jul 26 Python
Django 创建后台,配置sqlite3教程
Nov 18 Python
python实现在多维数组中挑选符合条件的全部元素
Nov 26 Python
python输出数学符号实例
May 11 Python
Python接口自动化系列之unittest结合ddt的使用教程详解
Feb 23 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基础设计模式大全(注册树模式、工厂模式、单列模式)
2015/08/31 PHP
ThinkPHP3.2.2实现持久登录(记住我)功能的方法
2016/05/16 PHP
Yii2创建表单(ActiveForm)方法详解
2016/07/23 PHP
图片延迟加载的实现代码(模仿懒惰)
2013/03/29 Javascript
node.js中Socket.IO的进阶使用技巧
2014/11/04 Javascript
js实现遮罩层弹出框的方法
2015/01/15 Javascript
JavaScript知识点总结(六)之JavaScript判断变量数据类型
2016/05/31 Javascript
node下使用UglifyJS压缩合并JS文件的方法
2018/03/07 Javascript
vue-router history模式下的微信分享小结
2018/07/05 Javascript
详解vue配置后台接口方式
2019/03/29 Javascript
nodejs实现用户登录路由功能
2019/05/22 NodeJs
JS数组扁平化(flat)方法总结详解
2019/06/24 Javascript
微信小程序wx.navigateTo中events属性实现页面间通信传值,数据同步
2019/07/13 Javascript
从0搭建vue-cli4脚手架
2020/06/17 Javascript
[05:15]DOTA2英雄梦之声_第16期_灰烬之灵
2014/06/21 DOTA
关于Python面向对象编程的知识点总结
2017/02/14 Python
python、java等哪一门编程语言适合人工智能?
2017/11/13 Python
Python cookbook(数据结构与算法)将多个映射合并为单个映射的方法
2018/04/19 Python
flask session组件的使用示例
2018/12/25 Python
Python redis操作实例分析【连接、管道、发布和订阅等】
2019/05/16 Python
Python算法的时间复杂度和空间复杂度(实例解析)
2019/11/19 Python
Python内置加密模块用法解析
2019/11/25 Python
vscode写python时的代码错误提醒和自动格式化的方法
2020/05/07 Python
Python Dataframe常见索引方式详解
2020/05/27 Python
CSS3中box-shadow的用法介绍
2015/07/15 HTML / CSS
既然说Ruby中一切都是对象,那么Ruby中类也是对象吗
2013/01/26 面试题
先进德育工作者事迹材料
2014/01/24 职场文书
少先队入队活动方案
2014/02/08 职场文书
卖房授权委托书样本
2014/10/05 职场文书
办公用品质量保证书
2015/05/11 职场文书
火烧圆明园观后感
2015/06/03 职场文书
2015教师节通讯稿
2015/07/20 职场文书
python全面解析接口返回数据
2022/02/12 Python
P站美图推荐——变身女主角特辑
2022/03/20 日漫
Python 的演示平台支持 WSGI 接口的应用
2022/04/20 Python
Python 绘制多因子柱状图
2022/05/11 Python