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程序设计入门(5)类的使用简介
Jun 16 Python
Python中的高级数据结构详解
Mar 27 Python
利用python程序帮大家清理windows垃圾
Jan 15 Python
基于Python的关键字监控及告警
Jul 06 Python
Python实现的拟合二元一次函数功能示例【基于scipy模块】
May 15 Python
python 创建一个空dataframe 然后添加行数据的实例
Jun 07 Python
使用Py2Exe for Python3创建自己的exe程序示例
Oct 31 Python
python字典一键多值实例代码分享
Jun 14 Python
Python-Tkinter Text输入内容在界面显示的实例
Jul 12 Python
Python全局锁中如何合理运用多线程(多进程)
Nov 06 Python
python去除删除数据中\u0000\u0001等unicode字符串的代码
Mar 06 Python
理解Django 中Call Stack机制的小Demo
Sep 01 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学习之php4与php5之间会穿梭一点点感悟
2007/05/03 PHP
逐步提升php框架的性能
2008/01/10 PHP
php中关于长度计算容易混淆的问题分析
2016/05/27 PHP
浅析php如何实现App常用的秒发功能
2016/08/03 PHP
PHP中Trait及其应用详解
2017/02/14 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
2017/12/21 PHP
javascript 动态添加事件代码
2008/11/30 Javascript
jQuery中Dom的基本操作小结
2014/01/23 Javascript
jquery操作复选框(checkbox)的12个小技巧总结
2014/02/04 Javascript
Javascript中this的用法详解
2014/09/22 Javascript
[原创]JQuery 在表单提交之前修改 提交的值
2016/04/14 Javascript
学习 NodeJS 第八天:Socket 通讯实例
2016/12/21 NodeJs
JS实现评价的星星功能
2017/08/20 Javascript
详解如何在你的Vue项目配置vux
2018/06/04 Javascript
用python登录Dr.com思路以及代码分享
2014/06/25 Python
详解Python中expandtabs()方法的使用
2015/05/18 Python
详解Python map函数及Python map()函数的用法
2017/11/16 Python
python利用小波分析进行特征提取的实例
2019/01/09 Python
解决python执行不输出系统命令弹框的问题
2019/06/24 Python
python列表,字典,元组简单用法示例
2019/07/11 Python
python实现的登录与提交表单数据功能示例
2019/09/25 Python
python飞机大战pygame游戏背景设计详解
2019/12/17 Python
python实现双色球随机选号
2020/01/01 Python
Keras 数据增强ImageDataGenerator多输入多输出实例
2020/07/03 Python
Python子进程subpocess原理及用法解析
2020/07/16 Python
德国药房apodiscounter中文官网:德国排名前三的网上药店
2019/06/03 全球购物
Myprotein荷兰官网:欧洲第一运动营养品牌
2020/07/11 全球购物
初级Java程序员面试题
2016/03/03 面试题
大一军训感言
2014/01/09 职场文书
旅游安全协议书
2014/04/21 职场文书
《美丽的南沙群岛》教学反思
2014/04/27 职场文书
学习雷锋演讲稿
2014/05/10 职场文书
县政府领导班子“四风”方面突出问题整改措施
2014/09/23 职场文书
病假证明模板
2015/06/19 职场文书
python 对图片进行简单的处理
2021/06/23 Python
如何解决php-fpm启动不了问题
2021/11/17 PHP