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的Supervisor进行进程监控以及自动启动
May 29 Python
深入浅析Python字符编码
Nov 12 Python
pycharm远程调试openstack的图文教程
Nov 21 Python
Python实现读取Properties配置文件的方法
Mar 29 Python
Python中实现单例模式的n种方式和原理
Nov 14 Python
解决python给列表里添加字典时被最后一个覆盖的问题
Jan 21 Python
用python打开摄像头并把图像传回qq邮箱(Pyinstaller打包)
May 17 Python
Django+Celery实现动态配置定时任务的方法示例
May 26 Python
python能自学吗
Jun 18 Python
python怎么删除缓存文件
Jul 19 Python
Python如何测试stdout输出
Aug 10 Python
用Python仅20行代码编写一个简单的端口扫描器
Apr 08 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 JSON 数据解析代码
2010/05/26 PHP
PHP统一页面编码避免乱码问题
2015/04/09 PHP
Linux平台PHP5.4设置FPM线程数量的方法
2016/11/09 PHP
ThinkPHP框架使用redirect实现页面重定向的方法实例分析
2018/04/12 PHP
脚本收藏iframe
2006/07/21 Javascript
JavaScript与C# Windows应用程序交互方法
2007/06/29 Javascript
Jquery Ajax方法传值到action的方法
2014/05/11 Javascript
jquery访问ashx文件示例代码
2014/08/11 Javascript
BAT及各大互联网公司2014前端笔试面试题--JavaScript篇
2014/10/29 Javascript
JS实现自适应高度表单文本框的方法
2015/02/25 Javascript
jquery带有索引按钮且自动轮播切换特效代码分享
2015/09/15 Javascript
jQuery实现非常实用漂亮的select下拉菜单选择效果
2015/11/06 Javascript
基于jquery fly插件实现加入购物车抛物线动画效果
2016/04/05 Javascript
VUEJS实战之利用laypage插件实现分页(3)
2016/06/13 Javascript
详解Weex基于Vue2.0开发模板搭建
2017/03/20 Javascript
webpack vue 项目打包生成的文件,资源文件报404问题的修复方法(总结篇)
2018/01/09 Javascript
微信小程序下拉框搜索功能的实现方法
2019/07/31 Javascript
JavaScript 中的执行上下文和执行栈实例讲解
2021/02/25 Javascript
[04:30]显微镜下的DOTA2第五期——拉比克
2013/09/26 DOTA
Python迭代用法实例教程
2014/09/08 Python
python TCP Socket的粘包和分包的处理详解
2018/02/09 Python
tensorflow实现对图片的读取的示例代码
2018/02/12 Python
使用matplotlib画散点图的方法
2018/05/25 Python
pandas 对series和dataframe进行排序的实例
2018/06/09 Python
python3 assert 断言的使用详解 (区别于python2)
2019/11/27 Python
Python json解析库jsonpath原理及使用示例
2020/11/25 Python
css3实现顶部社会化分享按钮示例
2014/05/06 HTML / CSS
只要五步 就可以用HTML5/CSS3快速制作便签贴特效(图)
2012/06/04 HTML / CSS
HTML5拖拽文件到浏览器并实现文件上传下载功能代码
2013/06/06 HTML / CSS
HTML5实现可缩放时钟代码
2017/08/28 HTML / CSS
领导视察欢迎词
2014/01/15 职场文书
服务承诺书格式
2014/05/21 职场文书
国际会计专业求职信
2014/08/04 职场文书
长城导游词300字
2015/01/30 职场文书
观看《信仰》心得体会
2016/01/15 职场文书
学会掌握自己命运的十条黄金法则:
2019/08/08 职场文书