property(fget=None, fset=None, fdel=None, doc=None) 

俗话说条条大路通罗马,同样是完成一件事,Python 其实提供了好几个方式供你选择。

property() 是一个比较奇葩的BIF,它的作用把方法当作属性来访问,从而提供更加友好访问方式。

官方帮助文档代码:

  1. class C:
  2. def __init__(self):
  3. self._x = None
  4. def getx(self):
  5. return self._x
  6. def setx(self, value):
  7. self._x = value
  8. def delx(self):
  9. del self._x
  10. x = property(getx, setx, delx, "I'm the 'x' property.")

复制代码

property() 返回一个可以设置属性的属性,当然如何设置属性还是需要我们人为来写代码。第一个参数是获得属性的方法名(例子中是 getx),第二个参数是设置属性的方法名(例子中是 setx),第三个参数是删除属性的方法名(例子中是 delx)。

property() 有什么作用呢?举个例子,在上边的例题中,我们为用户提供 setx 方法名来设置 _x 属性,提供 getx 方法名来获取属性。但是有一天你心血来潮,突然想对程序进行大改,可能你需要把 setx 和 getx 修改为 set_x 和 get_x,那你不得不修改用户调用的接口,这样子的体验就非常不好。

有了 property() 所有问题就迎刃而解了,因为像上边一样,我们为用户访问 _x 属性只提供了 x 属性。无论我们内部怎么改动,只需要相应的修改 property() 的参数,用户仍然只需要去操作 x 属性即可,对他们来说没有任何影响。

使用属性修饰符创建描述符

使用属性修饰符创建描述符,也可以实现同样的功能(【扩展阅读】Python 函数修饰符(装饰器)的使用):

官方帮助文档代码:

  1. class C:
  2. def __init__(self):
  3. self._x = None
  4. @property
  5. def x(self):
  6. """I'm the 'x' property."""
  7. return self._x
  8. @x.setter
  9. def x(self, value):
  10. self._x = value
  11. @x.deleter
  12. def x(self):
  13. del self._x

复制代码

注意:三个处理 _x 属性的方法名要相同(参数不同)。

转载于:https://www.cnblogs.com/fclbky/p/4098191.html

property 的详细使用方法相关推荐

  1. Python零基础速成班-第10讲-Python面向对象编程(下),Property属性、特殊方法、设计模式、链表应用

    Python零基础速成班-第10讲-Python面向对象编程(下),Property属性.特殊方法.设计模式.链表应用 学习目标 面向对象编程 接上一讲:Property属性.特殊方法.设计模式 面向 ...

  2. uiautomator2详细使用方法

    uiautomator2详细使用方法 1.简介 2.工作原理 3.安装与启动 3.1 安装uiautomator2 3.2 安装weditor 4. 元素定位 4.1 使用方法 4.2 支持的定位方式 ...

  3. pythongui界面实例带注释_python GUI库图形界面开发之PyQt5状态栏控件QStatusBar详细使用方法实例...

    PyQt5状态栏控件QStatusBar简介 MainWindow对象在底部保留有一个水平条,作为状态栏(QstatusBar),用于显示永久或临时的状态信息 QStatusBar类中的常用方法 方法 ...

  4. python表格控件_python GUI库图形界面开发之PyQt5表格控件QTableView详细使用方法与实例...

    PyQt5表格控件QTableView简介 在通常情况下,一个应用需要和一批数据进行交互,然后以表格的形式输出这些信息,这时就需要用到QTableView类了,在QTableView中可以使用自定义的 ...

  5. python日历gui_python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例...

    PyQt5日期时间控件QDateTimeEdit介绍 QDateTimeEdit是一个允许用户编辑日期时间的控件,可以使用键盘上的上下键头按钮来增加或减少日期的时间值,QDateTimeEdit通过s ...

  6. linux怎么离线安装gcc文件夹,CentOS下离线安装gcc环境,图文详细,方法全面

    CentOS下离线安装gcc环境,图文详细,方法全面 下载 方式1:如果有网的虚拟机还没有安装,可以直接 yum install --downloadonly --downloaddir=/root/ ...

  7. [转]NUnit详细使用方法

    本文转自:http://www.cnblogs.com/confach/archive/2005/06/20/177817.html 原文如下: ---------- NUnit2.0详细使用方法 注 ...

  8. qpython3可视图形界面_python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法...

    QWidget基本介绍 基础窗口控件QWidget类是所有用户界面对象的基类,所有的窗口或者控件都直接或者间接的继承自QWidget类. 窗口坐标系统 PyQt使用统一的坐标系统来定位窗口控件的位置和 ...

  9. python中property方法有用_python中@property和property函数常见使用方法示例

    本文实例讲述了python中@property和property函数常见使用方法.分享给大家供大家参考,具体如下: 1.基本的@property使用,可以把函数当做属性用 class Person(o ...

  10. tortoise清理本地分支_TortoiseGit操作本地仓库的详细使用方法

    TortoiseGit 操作本地仓库的详细使用方法 Git 的使用越来越广泛, 不过默认使用命令行进行操作, 这就对那些习惯使用图形化界面的人造成了一定的困难, TortoiseGit 是 Git 在 ...

最新文章

  1. spring 全局变量_精华:关于Spring的15点总结
  2. 微博 Android 启动广告,使用Xposed去除微博国际版的启动广告
  3. 一、AJAX学习笔记——原生AJAX (ajax简介、XML简介、ajax优缺点、ajax的使用)
  4. eclipse类文件无法找到_「Revit技巧」新建项目和族时无法找到样板文件(丢失)?...
  5. vue表单中批量导入功能_vue实战(11)——vue+element UI实现表格数据导出Excel功能
  6. 含绝对值不等式的证明
  7. Eclipse中和编辑相关的快捷键
  8. 众信金融获“2015最佳绿色贡献奖”
  9. PLC Outstudio 使用教程
  10. 爬虫 京东登录协议分析
  11. 百旺如何看是否清卡_百旺税控怎么看反写成功
  12. 中国裁判文书网接口解密
  13. php 打印去掉页眉页脚,window.print打印 去掉页眉页脚及打印链接
  14. X86 MOVSB MOVSW MOVSD MOVSQ 指令详解
  15. JAVA Reflect反射详解
  16. 阿里云物联网配置网络流程
  17. 一位资深开发的个人经历 【转自百度贴吧 java吧 原标题 4年java 3年产品 现在又开始做android了】...
  18. 如何搭建一个站内搜索引擎(一) 第1章 写在最前
  19. SQL service基础(九)用户定义数据类型和用户定义函数的概念、创建及使用方法
  20. STUN, TURN, ICE介绍

热门文章

  1. SAP 采购订单入库——库存查询
  2. qlv视频怎么转换成mp4格式工厂?如何用格式工厂将qlv格式转换成mp4格式?
  3. 第五章---面向对象---小练习
  4. AutoCAD快速入门(二十九):视口
  5. 怎么有效提高淘宝店铺的转化率方法步骤
  6. Linux/Unix如何将日志发送到日志服务器
  7. c语言硬币个数最小值,c语言 PTA day4 将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法?...
  8. 雅虎邮箱pop服务器,使用Yahoo.com.cn的POP和SMTP
  9. 淘宝二面:说下二维码登录的原理?我懵了。。。
  10. 车牌识别系统 HY-LPR2