Python内置函数property()如何使用


Posted in Python onSeptember 01, 2020

代码

class Shuxing():
  def __init__(self, size = 10):
    self.size = size
  def getSize(self):
    print('getSize')
    return self.size
  def setSize(self, value):
    print('setSize')
    self.size = value
  def delSize(self):
    print('delSize')
    del self.size
  x = property(getSize, setSize, delSize)

sx=Shuxing(100)
print('1',sx.x)  #获取x,执行getSize方法
sx.x=1000   #设置x,执行setSize方法
print('2',sx.x)   #获取x,执行getSize方法
del sx.x  # 删除x,执行delSize方法

print('3',sx.size)   # 获取x,执行getSize方法,但是此时size已被删除,所以会报错 

结果

getSize
1 100
Traceback (most recent call last):
setSize
getSize
File "D:/PycharmProjects/flask_demo/a.py", line 21, in <module>
2 1000
delSize
print('3',sx.size)
AttributeError: 'Shuxing' object has no attribute 'size'

Process finished with exit code 1

property()函数中的三个函数分别对应的是获取属性的方法、设置属性的方法以及删除属性的方法,这样一来,外部的对象就可以通过访问x的方式,来达到获取、设置或删除属性的目的。

当需要更改上例中的getSize、setSize或delSize函数的名称时,如果这些方法是作为接口让用户调用的,那么对用户而言就要修改自己调用的方法名,很麻烦,使用了proprty()后,用户就不需担心这种问题了。

更多关于属性的内置方法有:

  • hasattr():判断对象中是否有指定名称的属性,第一个参数是对象,第二个参数是字符串(属性名称);
  • getattr():获取对象中指定的属性的值,如果属性不存在,返回指定的提示字符串,第一个参数是对象,第二参数是字符串(属性名称),第三个参数是字符串(访问的属性不存在时的提示);
  • setattr():设置对象中指定的属性的值,如果属性不存在,就自动为对象添加该属性并赋值,第一个参数是对象,第二个参数字符串(属性名称),第三个参数是需要设置的属性对应的值;
  • delattr():删除对象中指定的属性,第一个参数是对象,第二个参数需要删除的指定属性的名称。

以上就是Python内置函数property()如何使用的详细内容,更多关于Python内置函数property()的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python调用java模块SmartXLS和jpype修改excel文件的方法
Apr 28 Python
python下载文件记录黑名单的实现代码
Oct 24 Python
Python绘制3D图形
May 03 Python
Python使用Shelve保存对象方法总结
Jan 28 Python
使用Python正则表达式操作文本数据的方法
May 14 Python
关于pytorch中网络loss传播和参数更新的理解
Aug 20 Python
python编写计算器功能
Oct 25 Python
完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
Apr 01 Python
解决python pandas读取excel中多个不同sheet表格存在的问题
Jul 14 Python
Python字典取键、值对的方法步骤
Sep 30 Python
Python数据分析之pandas函数详解
Apr 21 Python
Python-typing: 类型标注与支持 Any类型详解
May 10 Python
mac安装python3后使用pip和pip3的区别说明
Sep 01 #Python
python3.7.3版本和django2.2.3版本是否可以兼容
Sep 01 #Python
解决python便携版无法直接运行py文件的问题
Sep 01 #Python
django有哪些好处和优点
Sep 01 #Python
python实现简单的五子棋游戏
Sep 01 #Python
Pycharm连接gitlab实现过程图解
Sep 01 #Python
pycharm不以pytest方式运行,想要切换回普通模式运行的操作
Sep 01 #Python
You might like
php 设计模式之 工厂模式
2008/12/19 PHP
php多文件上传功能实现原理及代码
2013/04/18 PHP
ThinkPHP模板中判断volist循环的最后一条记录的验证方法
2014/07/01 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
JavaScript原型继承之基础机制分析
2011/08/26 Javascript
Jquery右下角抖动、浮动 实例代码(兼容ie6、FF)
2013/08/15 Javascript
加载列表时jquery获取ul中第一个li的属性
2014/11/02 Javascript
JS实现跟随鼠标立体翻转图片的方法
2015/05/04 Javascript
Angular.js中$apply()和$digest()的深入理解
2016/10/13 Javascript
H5基于iScroll实现下拉刷新和上拉加载更多
2017/07/18 Javascript
用javascript获取任意颜色的更亮或更暗颜色值示例代码
2017/07/21 Javascript
前端主流框架vue学习笔记第二篇
2017/07/26 Javascript
详解关于vue-area-linkage走过的坑
2018/06/27 Javascript
了解前端理论:rscss和rsjs
2019/05/23 Javascript
Bootstrap实现模态框效果
2019/09/30 Javascript
vue使用openlayers实现移动点动画
2020/09/24 Javascript
Win7下搭建python开发环境图文教程(安装Python、pip、解释器)
2016/05/17 Python
Python 结巴分词实现关键词抽取分析
2017/10/21 Python
python使用邻接矩阵构造图代码示例
2017/11/10 Python
win7 x64系统中安装Scrapy的方法
2018/11/18 Python
在python中实现强制关闭线程的示例
2019/01/22 Python
Python使用POP3和SMTP协议收发邮件的示例代码
2019/04/16 Python
实例详解Python模块decimal
2019/06/26 Python
pycharm 安装JPype的教程
2019/08/08 Python
Pytorch 实现focal_loss 多类别和二分类示例
2020/01/14 Python
canvas绘制树形结构可视图形的实现
2020/04/03 HTML / CSS
ManoMano英国:欧洲第一家专注于DIY和园艺市场的电商平台
2020/03/12 全球购物
音乐系毕业生自荐信
2013/10/27 职场文书
外贸英语毕业生自荐信
2013/11/14 职场文书
夜班门卫岗位职责
2013/12/09 职场文书
校园广播稿500字
2014/02/04 职场文书
安卓程序员求职信
2014/02/28 职场文书
预备党员学习十八届三中全会精神思想汇报
2014/09/13 职场文书
大学生实习证明范文(5篇)
2014/09/18 职场文书
2014年初级职称工作总结
2014/12/08 职场文书
Mysql的Table doesn't exist问题及解决
2022/12/24 MySQL