python中property属性的介绍及其应用详解


Posted in Python onAugust 29, 2019

Python的property属性的功能是:property属性内部进行一系列的逻辑计算,最终将计算结果返回。
使用property修饰的实例方法被调用时,可以把它当做实例属性一样

property的用法1——装饰器方式

在类的实例方法上应用@property装饰器

class Test:
  def __init__(self):
    self.__num = 100
  @property
  def num(self):
    print("--get--")
    return self.__num
  @num.setter
  def num(self, num):
    print("--set--")
    self.__num = num
t = Test()
print(t.num)
t.num = 1
"""
--get--
100
--set--
"""

property属性的定义和调用要注意一下几点:

  • 定义时,在实例方法的基础上添加 @property 装饰器;并且仅有一个self参数。
  • 调用时,无需括号。
  • 经典类中的属性只有一种访问方式,其对应被 @property 修饰的方法。
  • 新式类中的属性有三种访问方式,并分别对应了三个被@property、@方法名.setter、@方法名.deleter修饰的方法。
  • Python中的类有经典类和新式类,新式类的属性比经典类的属性丰富。( 如果类继object,那么该类是新式类 ),python3中的类都是新式类。

property的用法2——类属性方式

当使用类属性的方式创建property属性时,经典类和新式类无区别

class Test:
  def __init__(self):
    self.__num = 100
  def setNum(self, num):
    print("--set--")
    self.__num = num
  def getNum(self):
    print("--get--")
    return self.__num
  # 注意:要先写get方法,再写set方法
  aa = property(getNum, setNum)
t = Test()
print(t.aa)
t.aa = 1

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python安装官方whl包和tar.gz包的方法(推荐)
Jun 04 Python
mac系统安装Python3初体验
Jan 02 Python
tensorflow实现逻辑回归模型
Sep 08 Python
Python实现查找字符串数组最长公共前缀示例
Mar 27 Python
Python Flask 搭建微信小程序后台详解
May 06 Python
如何使用Flask-Migrate拓展数据库表结构
Jul 24 Python
TensorFlow学习之分布式的TensorFlow运行环境
Feb 05 Python
Python HTMLTestRunner可视化报告实现过程解析
Apr 10 Python
keras中的loss、optimizer、metrics用法
Jun 15 Python
Python logging日志库空间不足问题解决
Sep 14 Python
OpenCV+python实现膨胀和腐蚀的示例
Dec 21 Python
python基础入门之普通操作与函数(三)
Jun 13 Python
django-rest-swagger的优化使用方法
Aug 29 #Python
使用虚拟环境打包python为exe 文件的方法
Aug 29 #Python
python实现最大优先队列
Aug 29 #Python
django连接oracle时setting 配置方法
Aug 29 #Python
python线程的几种创建方式详解
Aug 29 #Python
python fuzzywuzzy模块模糊字符串匹配详细用法
Aug 29 #Python
python多线程分块读取文件
Aug 29 #Python
You might like
win平台安装配置Nginx+php+mysql 环境
2016/01/12 PHP
PHP设计模式之装饰器模式实例详解
2018/02/07 PHP
javascript实现的动态文字变换
2007/07/28 Javascript
JavaScript Event学习第二章 Event浏览器兼容性
2010/02/07 Javascript
基于jquery的大众点评,分类导航实现代码
2011/08/23 Javascript
FireFox下XML对象转化成字符串的解决方法
2011/12/09 Javascript
js禁止document element对象选中文本实现代码
2013/03/21 Javascript
捕获键盘事件(且兼容各浏览器)
2013/07/03 Javascript
js 本地预览的简单实现方法
2014/02/18 Javascript
Ext4.2的Ext.grid.plugin.RowExpander无法触发事件解决办法
2014/08/15 Javascript
JS跨域问题详解
2014/11/25 Javascript
jquery渐隐渐显的图片幻灯闪烁切换实现方法
2015/02/26 Javascript
js鼠标点击图片切换效果代码分享
2015/08/26 Javascript
JavaScript数据绑定实现一个简单的 MVVM 库
2016/04/08 Javascript
AngularJS ng-blur 指令详解及简单实例
2016/07/30 Javascript
jQuery 插件实现随机自由弹跳气泡样式
2017/01/12 Javascript
JavaScript禁止微信浏览器下拉回弹效果
2017/05/16 Javascript
vue事件修饰符和按键修饰符用法总结
2017/07/25 Javascript
小程序实现展开/收起的效果示例
2018/09/22 Javascript
webpack打包多页面的方法
2018/11/30 Javascript
bootstrap与pagehelper实现分页效果
2018/12/29 Javascript
浅谈vue加载优化策略
2019/03/19 Javascript
Python3实现个位数字和十位数字对调, 其乘积不变
2020/05/03 Python
使用Keras预训练模型ResNet50进行图像分类方式
2020/05/23 Python
全球知名提供各类营养保健品的零售商:Vitamin Shoppe
2016/10/09 全球购物
一套带网友答案的.NET笔试题
2016/12/06 面试题
如何利用cmp命令比较文件
2016/04/11 面试题
杠杆的科学教学反思
2014/01/10 职场文书
公司开业庆典策划方案
2014/06/04 职场文书
感恩节寄语2015
2015/03/24 职场文书
2015年卫生监督工作总结
2015/05/21 职场文书
2016护理专业求职自荐书
2016/01/28 职场文书
再读《皇帝的新衣》的读后感悟!
2019/08/07 职场文书
go web 预防跨站脚本的实现方式
2021/06/11 Golang
python自动化八大定位元素讲解
2021/07/09 Python
vue递归实现树形组件
2022/07/15 Vue.js