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标准库中的wave模块绘制乐谱的简单教程
Mar 30 Python
python数据结构之图的实现方法
Jul 08 Python
使用pandas批量处理矢量化字符串的实例讲解
Jul 10 Python
使用python进行拆分大文件的方法
Dec 10 Python
解决python中用matplotlib画多幅图时出现图形部分重叠的问题
Jul 07 Python
Django Rest framework解析器和渲染器详解
Jul 25 Python
python2.7的flask框架之引用js&amp;css等静态文件的实现方法
Aug 22 Python
Python高级property属性用法实例分析
Nov 19 Python
python中必要的名词解释
Nov 20 Python
Python排序函数的使用方法详解
Dec 11 Python
Python+kivy BoxLayout布局示例代码详解
Dec 28 Python
解决pytorch读取自制数据集出现过的问题
May 31 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 xml文件操作代码(一)
2009/03/20 PHP
php截取中文字符串不乱码的方法
2013/12/25 PHP
Yii rules常用规则示例
2016/03/15 PHP
PHP设计模式之数据访问对象模式(DAO)原理与用法实例分析
2019/12/12 PHP
用JavaScrpt实现文件夹简单轻松加密的实现方法图文
2008/09/08 Javascript
关于IE7 IE8弹出窗口顶上
2008/12/22 Javascript
Jquery公告滚动+AJAX后台得到数据
2011/04/14 Javascript
jQuery中将函数赋值给变量的调用方法
2012/03/23 Javascript
jquery根据name属性查找的小例子
2013/11/21 Javascript
一个JavaScript函数把URL参数解析成Json对象
2014/09/24 Javascript
JavaScript中对DOM节点的访问、创建、修改、删除
2015/11/16 Javascript
JavaScript转换与解析JSON方法实例详解
2015/11/24 Javascript
BootStrap 智能表单实战系列(二)BootStrap支持的类型简介
2016/06/13 Javascript
Jquery UI实现一次拖拽多个选中的元素操作
2020/12/01 Javascript
Canvas实现放射线动画效果
2017/02/15 Javascript
Angular组件化管理实现方法分析
2017/03/17 Javascript
微信小程序 列表的上拉加载和下拉刷新的实现
2017/04/01 Javascript
详解cordova打包成webapp的方法
2017/10/18 Javascript
jQuery+CSS实现的table表格行列转置功能示例
2018/01/08 jQuery
Vue程序调试的方法
2019/06/17 Javascript
Vue+Element UI 树形控件整合下拉功能菜单(tree + dropdown +input)
2020/08/28 Javascript
在Docker上开始部署Python应用的教程
2015/04/17 Python
Python切片索引用法示例
2018/05/15 Python
django-rest-framework解析请求参数过程详解
2019/07/18 Python
Python中的四种交换数值的方法解析
2019/11/18 Python
phpquery中文手册
2021/03/18 PHP
高二化学教学反思
2014/01/30 职场文书
法制宣传月活动总结
2014/04/29 职场文书
超市创意活动方案
2014/08/15 职场文书
2014员工聘用协议书(最新版)
2014/11/24 职场文书
党建工作汇报材料
2014/12/24 职场文书
2015年大学生入党自荐书
2015/03/24 职场文书
2016学习雷锋精神活动倡议书
2015/04/27 职场文书
Python中Permission denied的解决方案
2021/04/02 Python
vue响应式原理与双向数据的深入解析
2021/06/04 Vue.js
Nginx下SSL证书安装部署步骤介绍
2021/12/06 Servers