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牛刀小试密码爆破
Feb 03 Python
Python模块学习 filecmp 文件比较
Aug 27 Python
仅用500行Python代码实现一个英文解析器的教程
Apr 02 Python
对Python中for复合语句的使用示例讲解
Nov 01 Python
Python查找文件中包含中文的行方法
Dec 19 Python
微信小程序python用户认证的实现
Jul 29 Python
python调用支付宝支付接口流程
Aug 15 Python
Django中密码的加密、验密、解密操作
Dec 19 Python
Python astype(np.float)函数使用方法解析
Jun 08 Python
Python3爬虫带上cookie的实例代码
Jul 28 Python
Python Web项目Cherrypy使用方法镜像
Nov 05 Python
python 爬取天气网卫星图片
Jun 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
ftp类(example.php)
2006/10/09 PHP
常用PHP封装分页工具类
2017/01/14 PHP
PHP基于ORM方式操作MySQL数据库实例
2017/06/21 PHP
JavaScript 给汉字排序实例代码
2008/06/28 Javascript
一些javascript一些题目的解析
2010/12/25 Javascript
改善用户体验的五款jQuery插件分享
2011/05/22 Javascript
jQuery实现点击文本框弹出热门标签的提示效果
2013/11/17 Javascript
JavaScript高级教程5.6之基本包装类型(详细)
2015/11/23 Javascript
jQuery前端开发35个小技巧
2016/05/24 Javascript
文件上传的几个示例分享【推荐】
2016/12/16 Javascript
vuejs指令详解
2017/02/07 Javascript
javascript简单写的判断电话号码实例
2017/05/24 Javascript
AngularJS中重新加载当前路由页面的方法
2018/03/09 Javascript
JavaScript笛卡尔积超简单实现算法示例
2018/07/30 Javascript
Vue调用后端java接口的实例代码
2019/10/28 Javascript
vue vant Area组件使用详解
2019/12/09 Javascript
微信小程序点击生成朋友圈分享图(遇到的坑)
2020/06/17 Javascript
Vue——解决报错 Computed property &quot;****&quot; was assigned to but it has no setter.
2020/12/19 Vue.js
[01:01]青春无憾,一战成名——DOTA2全国高校联赛开启
2018/02/25 DOTA
[41:52]DOTA2-DPC中国联赛 正赛 CDEC vs Dynasty BO3 第二场 2月22日
2021/03/11 DOTA
Python中的Numpy入门教程
2014/04/26 Python
Pycharm学习教程(7)虚拟机VM的配置教程
2017/05/04 Python
Python的装饰器使用详解
2017/06/26 Python
Python中的TCP socket写法示例
2018/05/11 Python
解决python文件双击运行秒退的问题
2019/06/24 Python
pycharm 2020 1.1的安装流程
2020/09/29 Python
BeautifulSoup获取指定class样式的div的实现
2020/12/07 Python
美国领先的精品家居照明和装饰产品在线零售商:LightsOnline.com
2018/01/23 全球购物
意大利单身交友网站:Meetic
2020/07/12 全球购物
优秀毕业生推荐信范文
2014/03/07 职场文书
绿色城市实施方案
2014/03/19 职场文书
个人承诺书格式
2014/06/03 职场文书
乡村教师党员四风问题对照检查材料思想汇报
2014/10/08 职场文书
神龙架导游词
2015/02/11 职场文书
Golang之sync.Pool使用详解
2021/05/06 Golang
在vue中import()语法不能传入变量的问题及解决
2022/04/01 Vue.js