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 11 Python
跟老齐学Python之编写类之四再论继承
Oct 11 Python
python爬虫框架scrapy实战之爬取京东商城进阶篇
Apr 24 Python
对变量赋值的理解--Pyton中让两个值互换的实现方法
Nov 29 Python
解决pycharm 误删掉项目文件的处理方法
Oct 22 Python
Python Request爬取seo.chinaz.com百度权重网站的查询结果过程解析
Aug 13 Python
python:动态路由的Flask程序代码
Nov 22 Python
Python数据可视化:饼状图的实例讲解
Dec 07 Python
Python调用scp向服务器上传文件示例
Dec 22 Python
基于SQLAlchemy实现操作MySQL并执行原生sql语句
Jun 10 Python
详解matplotlib中pyplot和面向对象两种绘图模式之间的关系
Jan 22 Python
还在手动盖楼抽奖?教你用Python实现自动评论盖楼抽奖(一)
Jun 07 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
php whois查询API制作方法
2011/06/23 PHP
色色整理的PHP面试题集锦
2012/03/08 PHP
php获取根域名方法汇总
2014/10/28 PHP
php函数与传递参数实例分析
2014/11/15 PHP
PHP7 参数处理机制修改
2021/03/09 PHP
IE php关于强制下载文件的代码
2008/08/23 Javascript
基于jquery的多功能软键盘插件
2012/07/25 Javascript
定时器(setTimeout/setInterval)调用带参函数失效解决方法
2013/03/26 Javascript
Javascript+CSS实现影像卷帘效果思路及代码
2014/10/20 Javascript
小白谈谈对JS原型链的理解
2016/05/03 Javascript
深入理解jquery自定义动画animate()
2016/05/24 Javascript
JS中script标签defer和async属性的区别详解
2016/08/12 Javascript
使用JS实现气泡跟随鼠标移动的动画效果
2017/09/16 Javascript
node.js自动上传ftp的脚本分享
2018/06/16 Javascript
[02:19]2018年度DOTA2最佳核心位选手-完美盛典
2018/12/17 DOTA
[00:08]DOTA2勇士令状等级奖励“天外飞星”
2019/05/24 DOTA
Python实现根据指定端口探测服务器/模块部署的方法
2014/08/25 Python
python使用tomorrow实现多线程的例子
2019/07/20 Python
Python图片的横坐标汉字实例
2019/12/04 Python
html5使用canvas画一条线
2014/12/15 HTML / CSS
HTML5中的Web Notification桌面通知功能的实现方法
2019/07/29 HTML / CSS
HTML5去掉输入框type为number时的上下箭头的实现方法
2020/01/03 HTML / CSS
美国廉价机票预订网站:Cheapfaremart
2018/04/28 全球购物
瑞士设计师家具和家居饰品网上商店:Bruno Wickart
2019/03/18 全球购物
班主任工作年限证明
2014/01/12 职场文书
激励员工的口号
2014/06/16 职场文书
行政秘书工作自我鉴定
2014/09/15 职场文书
2014年法制宣传日活动方案
2014/11/02 职场文书
2014年度考核工作总结
2014/12/24 职场文书
给老婆的检讨书
2015/01/27 职场文书
食品安全主题班会
2015/08/13 职场文书
2016教师党员学习心得体会
2016/01/21 职场文书
2019年“我为祖国点赞”演讲稿(3篇)
2019/09/26 职场文书
MySQL系列之八 MySQL服务器变量
2021/07/02 MySQL
Mysql中where与on的区别及何时使用详析
2021/08/04 MySQL
2022微信温控新功能上线
2022/05/09 数码科技