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中__init__和__new__的区别详解
Jul 09 Python
Python中几种属性访问的区别与用法详解
Oct 10 Python
使用Python实现跳一跳自动跳跃功能
Jul 10 Python
python Elasticsearch索引建立和数据的上传详解
Aug 04 Python
Python使用grequests(gevent+requests)并发发送请求过程解析
Sep 25 Python
Python的几种主动结束程序方式
Nov 22 Python
python 多进程队列数据处理详解
Dec 23 Python
tensorflow求导和梯度计算实例
Jan 23 Python
python字符串替换re.sub()实例解析
Feb 09 Python
谈谈python垃圾回收机制
Sep 27 Python
python如何快速拼接字符串
Oct 28 Python
Python使用socket去实现TCP客户端和TCP服务端
Apr 12 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 动态随机生成验证码类代码
2010/04/09 PHP
获取用户Ip地址通用方法与常见安全隐患(HTTP_X_FORWARDED_FOR)
2013/06/01 PHP
PHP截断标题且兼容utf8和gb2312编码
2013/09/22 PHP
学习php设计模式 php实现备忘录模式(Memento)
2015/12/09 PHP
PHP利用正则表达式将相对路径转成绝对路径的方法示例
2017/02/28 PHP
laravel 实现用户登录注销并限制功能
2019/10/24 PHP
js如何调用qq互联api实现第三方登录
2014/03/28 Javascript
JavaScript Split()方法
2015/12/18 Javascript
jQuery配合coin-slider插件制作幻灯片效果的流程解析
2016/05/13 Javascript
详解数组Array.sort()排序的方法
2020/05/09 Javascript
JavaScript实现删除数组重复元素的5种常用高效算法总结
2018/01/18 Javascript
JS实现字符串翻转的方法分析
2018/08/31 Javascript
[01:01:01]完美世界DOTA2联赛循环赛 GXR vs FTD BO2第一场 10.29
2020/10/29 DOTA
python网页请求urllib2模块简单封装代码
2014/02/07 Python
Python ftp上传文件
2016/02/13 Python
Python的Tornado框架实现异步非阻塞访问数据库的示例
2016/06/30 Python
关于Pycharm无法debug问题的总结
2019/01/19 Python
python机器人运动范围问题的解答
2019/04/29 Python
用python打印1~20的整数实例讲解
2019/07/01 Python
Python Django 添加首页尾页上一页下一页代码实例
2019/08/21 Python
Python selenium 加载并保存QQ群成员,去除其群主、管理员信息的示例代码
2020/05/28 Python
Python+Selenium随机生成手机验证码并检查页面上是否弹出重复手机号码提示框
2020/09/21 Python
python爬虫快速响应服务器的做法
2020/11/24 Python
python爬虫中url管理器去重操作实例
2020/11/30 Python
利用canvas实现图片压缩的示例代码
2018/07/17 HTML / CSS
amazeui页面校验功能的实现代码
2020/08/24 HTML / CSS
Oracle里面常用的数据字典有哪些
2014/02/14 面试题
武汉瑞得软件笔试题
2015/10/27 面试题
医院安全生产月活动总结
2014/07/05 职场文书
汽修专业自荐信
2014/07/07 职场文书
讲文明知礼仪演讲稿
2014/09/13 职场文书
2016年公务员六五普法心得体会
2016/01/21 职场文书
将Python代码打包成.exe可执行文件的完整步骤
2021/05/12 Python
Vue Element UI自定义描述列表组件
2021/05/18 Vue.js
MySQL索引是啥?不懂就问
2021/07/21 MySQL
golang连接MySQl使用sqlx库
2022/04/14 Golang