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 相关文章推荐
apache部署python程序出现503错误的解决方法
Jul 24 Python
Python文本处理之按行处理大文件的方法
Apr 09 Python
selenium python 实现基本自动化测试的示例代码
Feb 25 Python
python3 自动识别usb连接状态,即对usb重连的判断方法
Jul 03 Python
Python-copy()与deepcopy()区别详解
Jul 12 Python
利用Python产生加密表和解密表的实现方法
Oct 15 Python
python requests抓取one推送文字和图片代码实例
Nov 04 Python
Python3标准库之functools管理函数的工具详解
Feb 27 Python
Python virtualenv虚拟环境实现过程解析
Apr 18 Python
Python语言编写智力问答小游戏功能
Oct 13 Python
python subprocess pipe 实时输出日志的操作
Dec 05 Python
Python 实现劳拉游戏的实例代码(四连环、重力四子棋)
Mar 03 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 模拟登陆MSN并获得用户信息
2009/05/16 PHP
php 生成唯一id的几种解决方法
2013/03/08 PHP
如何使用PHP Embed SAPI实现Opcodes查看器
2015/11/10 PHP
tp5.1 框架查询表达式用法详解
2020/05/25 PHP
cnblogs TagCloud基于jquery的实现代码
2010/06/11 Javascript
基于javascript滚动图片具体实现
2013/11/18 Javascript
Jquery的each里用return true或false代替break或continue
2014/05/21 Javascript
关于JavaScript命名空间的一些心得
2014/06/07 Javascript
实现非常简单的js双向数据绑定
2015/11/06 Javascript
ES6的新特性概览
2016/03/10 Javascript
BootStrap daterangepicker 双日历控件
2017/06/02 Javascript
使用vue和datatables进行表格的服务器端分页实例代码
2017/06/07 Javascript
vue2.0 axios前后端数据处理实例代码
2017/06/30 Javascript
jQuery实现表格冻结顶栏效果
2017/08/20 jQuery
原生JS实现小小的音乐播放器
2017/10/16 Javascript
在vue中实现点击选择框阻止弹出层消失的方法
2018/09/15 Javascript
vue中过滤器filter的讲解
2019/01/21 Javascript
js实现经典贪吃蛇小游戏
2020/03/19 Javascript
VUE异步更新DOM - 用$nextTick解决DOM视图的问题
2020/11/06 Javascript
[01:11]回顾历届DOTA2国际邀请赛中国区预选赛
2017/06/26 DOTA
Python中使用partial改变方法默认参数实例
2015/04/28 Python
Python学习笔记整理3之输入输出、python eval函数
2015/12/14 Python
python模拟表单提交登录图书馆
2018/04/27 Python
详解Python中打乱列表顺序random.shuffle()的使用方法
2019/11/11 Python
Python模块的定义,模块的导入,__name__用法实例分析
2020/01/07 Python
Python使用urlretrieve实现直接远程下载图片的示例代码
2020/08/17 Python
CSS3 please 跨浏览器的CSS3产生器
2010/03/14 HTML / CSS
报社实习生自荐信
2014/01/24 职场文书
《毛主席在花山》教学反思
2014/04/20 职场文书
大学生标准自荐书
2014/06/15 职场文书
学校安全生产月活动总结
2014/07/05 职场文书
法定代表人身份证明书
2015/06/18 职场文书
新闻报道稿范文
2015/07/23 职场文书
公安忠诚教育心得体会
2016/01/23 职场文书
初一英语教学反思
2016/02/15 职场文书
python使用matplotlib绘制图片时x轴的刻度处理
2021/08/30 Python