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 13 Python
Windows下Python使用Pandas模块操作Excel文件的教程
May 31 Python
python 基本数据类型占用内存空间大小的实例
Jun 12 Python
对Python3 pyc 文件的使用详解
Feb 16 Python
使用Python操作FTP实现上传和下载的方法
Apr 01 Python
python文件绝对路径写法介绍(windows)
Dec 25 Python
python爬虫开发之urllib模块详细使用方法与实例全解
Mar 09 Python
Python 自由定制表格的实现示例
Mar 20 Python
Jupyter notebook快速入门教程(推荐)
May 18 Python
JAVA SWT事件四种写法实例解析
Jun 05 Python
python3 中时间戳、时间、日期的转换和加减操作
Jul 14 Python
聊聊python中的循环遍历
Sep 07 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
日本十大最佳动漫,全都是二次元的神级作品
2019/10/05 日漫
php数组函数序列之array_values() 获取数组元素值的函数与方法
2011/10/30 PHP
用Simple Excel导出xls实现方法
2012/12/06 PHP
可以用来调试JavaScript错误的解决方案
2010/08/07 Javascript
js 实现在离开页面时提醒未保存的信息(减少用户重复操作)
2013/01/16 Javascript
浅析IE10兼容性问题(frameset的cols属性)
2014/01/03 Javascript
jQuery 删除/替换DOM元素的几种方式
2014/05/20 Javascript
jquery仅用6行代码实现滑动门效果
2015/09/07 Javascript
javascript与jquery动态创建html元素示例
2016/07/25 Javascript
jQuery实现图片滑动效果
2017/03/08 Javascript
Ionic2开发环境搭建教程
2020/08/20 Javascript
Node.js+jade+mongodb+mongoose实现爬虫分离入库与生成静态文件的方法
2017/09/20 Javascript
浅析node Async异步处理模块用例分析及常用方法介绍
2017/11/17 Javascript
JS函数节流和函数防抖问题分析
2017/12/18 Javascript
图文介绍Vue父组件向子组件传值
2018/02/17 Javascript
laydate如何根据开始时间或者结束时间限制范围
2018/11/15 Javascript
基于vue实现滚动条滚动到指定位置对应位置数字进行tween特效
2019/04/18 Javascript
详解VUE Element-UI多级菜单动态渲染的组件
2019/04/25 Javascript
jQuery实现获取多选框的值示例
2020/02/07 jQuery
基于p5.js 2D图像接口的扩展(交互实现)
2020/11/30 Javascript
Vue+Bootstrap实现简易学生管理系统
2021/02/09 Vue.js
Python利用multiprocessing实现最简单的分布式作业调度系统实例
2017/11/14 Python
Python使用pickle模块储存对象操作示例
2018/08/15 Python
python中pika模块问题的深入探究
2018/10/13 Python
python在不同条件下的输入与输出
2020/02/13 Python
Python ATM功能实现代码实例
2020/03/19 Python
Python爬取豆瓣数据实现过程解析
2020/10/27 Python
用canvas实现图片滤镜效果附演示
2013/11/05 HTML / CSS
HTML5 Canvas 实现K线图的示例代码
2019/12/23 HTML / CSS
丝芙兰加拿大官方网站:SEPHORA加拿大
2018/11/20 全球购物
JD Sports澳洲官网:英国领先的运动鞋和运动时尚零售商
2020/02/15 全球购物
个人党性分析材料
2014/12/19 职场文书
家庭教育教师培训学习体会
2016/01/14 职场文书
表扬信范文
2019/04/22 职场文书
Python控制台输出俄罗斯方块的方法实例
2021/04/17 Python
Java比较两个对象中全部属性值是否相等的方法
2021/08/07 Java/Android