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实现实例
Apr 26 Python
Python正则表达式经典入门教程
May 22 Python
python3操作mysql数据库的方法
Jun 23 Python
Pycharm技巧之代码跳转该如何回退
Jul 16 Python
python matplotlib绘图,修改坐标轴刻度为文字的实例
May 25 Python
python按时间排序目录下的文件实现方法
Oct 17 Python
Python操作redis实例小结【String、Hash、List、Set等】
May 16 Python
检测python爬虫时是否代理ip伪装成功的方法
Jul 12 Python
python 用户交互输入input的4种用法详解
Sep 24 Python
Django实现文件上传和下载功能
Oct 06 Python
keras读取训练好的模型参数并把参数赋值给其它模型详解
Jun 15 Python
Django静态文件加载失败解决方案
Aug 26 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页面缓存ob系列函数介绍
2012/10/18 PHP
PHP导航下拉菜单的实现如此简单
2013/09/22 PHP
推荐一款MAC OS X 下php集成开发环境mamp
2014/11/08 PHP
DB.ASP 用Javascript写ASP很灵活很好用很easy
2011/07/31 Javascript
用jquery和json从后台获得数据集的代码
2011/11/07 Javascript
javascript 获取HTML DOM父、子、临近节点
2014/06/16 Javascript
JavaScript使用pop方法移除数组最后一个元素用法实例
2015/04/06 Javascript
3个可以改善用户体验的AngularJS指令介绍
2015/06/18 Javascript
AngularJS directive返回对象属性详解
2016/03/28 Javascript
jquery自定义插件开发之window的实现过程
2016/05/06 Javascript
jquery validate表单验证插件
2016/09/06 Javascript
WEB 前端开发中防治重复提交的实现方法
2016/10/26 Javascript
微信小程序 支付功能实现PHP实例详解
2017/05/12 Javascript
详解如何用webpack打包一个网站应用项目
2017/07/12 Javascript
JS实现定时任务每隔N秒请求后台setInterval定时和ajax请求问题
2017/10/15 Javascript
vue实现tab切换外加样式切换方法
2018/03/16 Javascript
vue组件详解之使用slot分发内容
2018/04/09 Javascript
js嵌套的数组扁平化:将多维数组变成一维数组以及push()与concat()区别的讲解
2019/01/19 Javascript
简单了解vue中父子组件如何相互传递值(基础向)
2019/07/12 Javascript
Node.js在图片模板上生成二维码图片并附带底部文字说明实现详解
2019/08/07 Javascript
vue输入节流,避免实时请求接口的实例代码
2019/10/30 Javascript
JavaScript canvas基于数组生成柱状图代码实例
2020/03/06 Javascript
JS字符串补全方法padStart()和padEnd()
2020/05/27 Javascript
JS实现躲避粒子小游戏
2020/06/18 Javascript
python连接MySQL、MongoDB、Redis、memcache等数据库的方法
2013/11/15 Python
python学习--使用QQ邮箱发送邮件代码实例
2019/04/16 Python
python调用自定义函数的实例操作
2019/06/26 Python
python提取xml里面的链接源码详解
2019/10/15 Python
解决更改AUTH_USER_MODEL后出现的问题
2020/05/14 Python
Troy-Bilt官网:草坪割草机、吹雪机、分蘖机等
2019/02/19 全球购物
女士和男士时尚鞋在线购物:Shoespie
2019/02/28 全球购物
应届生法律顾问求职信
2013/11/19 职场文书
本科毕业自我鉴定
2014/03/20 职场文书
钢琴师观后感
2015/06/12 职场文书
2016年圣诞节活动总结范文
2016/04/01 职场文书
浅谈@Value和@Bean的执行顺序问题
2021/06/16 Java/Android