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中计算三角函数之cos()方法的使用简介
May 15 Python
python多线程方式执行多个bat代码
Jun 07 Python
Pycharm学习教程(5) Python快捷键相关设置
May 03 Python
关于django 数据库迁移(migrate)应该知道的一些事
May 27 Python
python实现文件助手中查看微信撤回消息
Apr 29 Python
使用selenium模拟登录解决滑块验证问题的实现
May 10 Python
Django在admin后台集成TinyMCE富文本编辑器的例子
Aug 09 Python
Python3标准库之functools管理函数的工具详解
Feb 27 Python
Django用数据库表反向生成models类知识点详解
Mar 25 Python
django admin管理工具自定义时间区间筛选器DateRangeFilter介绍
May 19 Python
Python自动创建Excel并获取内容
Sep 16 Python
如何用python写个模板引擎
Jan 14 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下连接ftp实现文件的上传、下载、删除文件实例代码
2010/06/03 PHP
PHP插入排序实现代码
2013/04/04 PHP
基于linnux+phantomjs实现生成图片格式的网页快照
2015/04/15 PHP
php实现简易计算器
2020/08/28 PHP
与jquery serializeArray()一起使用的函数,主要来方便提交表单
2011/01/31 Javascript
JavaScript实现继承的4种方法总结
2014/10/16 Javascript
JS中使用mailto实现将用户在网页中输入的内容传递到本地邮件客户端
2016/10/08 Javascript
Vue.js实战之利用vue-router实现跳转页面
2017/04/01 Javascript
js+html5实现页面可刷新的倒计时效果
2017/07/15 Javascript
jQuery动态添加元素无法触发绑定事件的解决方法分析
2018/01/02 jQuery
微信小程序文章详情页面实现代码
2018/09/10 Javascript
微信小程序全局变量功能与用法详解
2019/01/22 Javascript
微信小程序基于高德地图查找位置并显示文字
2019/10/30 Javascript
JavaScript 实现下雪特效的示例代码
2020/09/09 Javascript
[41:56]Spirit vs Liquid Supermajor小组赛A组 BO3 第一场 6.2
2018/06/03 DOTA
利用Django框架中select_related和prefetch_related函数对数据库查询优化
2015/04/01 Python
Python中__init__.py文件的作用详解
2016/09/18 Python
使用PyQtGraph绘制精美的股票行情K线图的示例代码
2019/03/14 Python
Python模块的制作方法实例分析
2019/12/21 Python
python入门之基础语法学习笔记
2020/02/08 Python
用Python生成HTML表格的方法示例
2020/03/06 Python
Python Tornado核心及相关原理详解
2020/06/24 Python
深入分析python 排序
2020/08/24 Python
Django通过设置CORS解决跨域问题
2020/11/26 Python
基于CSS3实现的黑色个性导航菜单效果
2015/09/14 HTML / CSS
详解Html5中video标签那些属性和方法
2019/07/01 HTML / CSS
局部内部类是否可以访问非final变量?
2013/04/20 面试题
经贸日语专业个人求职信范文
2014/04/29 职场文书
教师批评与自我批评剖析材料
2014/10/16 职场文书
证券区域经理岗位职责
2015/04/10 职场文书
2015年计算机教师工作总结
2015/07/22 职场文书
股东出资协议书
2016/03/21 职场文书
html+css实现赛博朋克风格按钮
2021/05/26 HTML / CSS
MongoDB数据库的安装步骤
2021/06/18 MongoDB
i5-10400f处理相当于i7多少水平
2022/04/19 数码科技
Golang 实现WebSockets
2022/04/24 Golang