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测试驱动开发实例
Oct 08 Python
在Python中使用mongoengine操作MongoDB教程
Apr 24 Python
利用python批量修改word文件名的方法示例
Oct 17 Python
python不换行之end=与逗号的意思及用途
Nov 21 Python
python后端接收前端回传的文件方法
Jan 02 Python
Python实现Event回调机制的方法
Feb 13 Python
2019 Python最新面试题及答案16道题
Apr 11 Python
Django页面数据的缓存与使用的具体方法
Apr 23 Python
python+selenium 鼠标事件操作方法
Aug 24 Python
使用opencv将视频帧转成图片输出
Dec 10 Python
Python爬取12306车次信息代码详解
Aug 12 Python
python基础之类属性和实例属性
Oct 24 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
仿Aspnetpager的一个PHP分页类代码 附源码下载
2012/10/08 PHP
php 购物车完整实现代码
2014/06/05 PHP
两个php日期控制类实例
2014/12/09 PHP
PHP实现的简单操作SQLite数据库类与用法示例
2017/06/19 PHP
php新建文件的方法实例
2019/09/26 PHP
记Laravel调用Gin接口调用formData上传文件的实现方法
2019/12/12 PHP
在JavaScript中遭遇级联表达式陷阱
2007/03/08 Javascript
javascript 去字符串空格终极版(支持utf8)
2009/11/14 Javascript
某人初学javascript的时候写的学习笔记
2010/12/30 Javascript
jQuery右键菜单contextMenu使用实例
2011/09/28 Javascript
JavaScript splice()方法详解
2020/09/22 Javascript
JavaScript中常见的字符串操作函数及用法汇总
2015/05/04 Javascript
jquery实现可点击伸缩与展开的菜单效果代码
2015/08/31 Javascript
JS用斜率判断鼠标进入DIV四个方向的方法
2016/11/07 Javascript
微信小程序中多个页面传参通信的学习与实践
2017/05/05 Javascript
用angular实现多选按钮的全选与反选实例代码
2017/05/23 Javascript
JavaScript生成图形验证码
2020/08/24 Javascript
jquery实现左右轮播图效果
2017/09/28 jQuery
vue2里面ref的具体使用方法
2017/10/27 Javascript
解决循环中setTimeout执行顺序的问题
2018/06/20 Javascript
JavaScript数组排序功能简单实现
2020/05/14 Javascript
python sqlobject(mysql)中文乱码解决方法
2008/11/14 Python
python实现定时同步本机与北京时间的方法
2015/03/24 Python
python读取一个目录下所有txt里面的内容方法
2018/06/23 Python
pandas中的series数据类型详解
2019/07/06 Python
python绘制高斯曲线
2021/02/19 Python
美国奢侈品在线团购网站:Gilt City
2017/11/16 全球购物
int *p=NULL和*p= NULL有什么区别
2014/10/23 面试题
自荐书范文
2013/12/08 职场文书
本科毕业生求职自荐信
2014/02/03 职场文书
工作期间打牌检讨书范文
2014/11/20 职场文书
西安事变观后感
2015/06/12 职场文书
银行中层干部培训心得体会
2016/01/11 职场文书
Redis主从配置和底层实现原理解析(实战记录)
2021/06/30 Redis
CSS三大特性继承性、层叠性和优先级详解
2022/01/18 HTML / CSS
Python 统计序列中元素的出现频度
2022/04/26 Python