Python 类,property属性(简化属性的操作),@property,property()用法示例


Posted in Python onOctober 12, 2019

本文实例讲述了Python 类,property属性(简化属性的操作),@property,property()用法。分享给大家供大家参考,具体如下:

property属性的创建方式有两种:1.@property装饰器方式   2.类属性方式 ( 类属性=property() )

property属性可以简化实例对象对属性的操作(获取、设置),可以对属性做类型校验和预处理等。

装饰器方式:

demo.py(@property,获取属性值,旧式类与新式类都有的方式):

class Goods:
  @property
  # 只能传递self参数。 必须返回一个值
  def size(self):
    return 100 # 必须返回一个值
obj = Goods()
result = obj.size # 调用属性(没有用小括号,用属性的方式调用函数)
print(result)
# property属性一般对属性值做一些预处理或格式化处理等,可以简化属性的获取。

运行结果:

100

demo.py(@xxx.setter,@xxx.deleter,设置属性值、删除属性,新式类支持的方式):

class Goods(object):
  def __init__(self):
    # 原价
    self.original_price = 100
    # 折扣
    self.discount = 0.8
  @property
  # 方式一 获取属性值 (新式类和旧式类都支持该方式)
  def price(self):
    # 实际价格 = 原价 * 折扣
    new_price = self.original_price * self.discount
    return new_price
  @price.setter
  # 方式二 设置属性值 (旧式类不支持,需要传两个参数)
  def price(self, value):
    self.original_price = value
  @price.deleter
  # 方式三 删除属性 (旧式类不支持)
  def price(self):
    del self.original_price
obj = Goods()
obj.price     # 获取商品价格 (自动调用@property修饰的函数)
obj.price = 200  # 修改商品原价 (自动调用@price.setter修饰的函数,并将200传给函数)
del obj.price   # 删除商品原价 (自动调用@price.deleter修饰的函数)

类属性方式:

demo.py(类属性创建property属性,旧式类与新式类都支持):

class Goods(object):
  def __init__(self):
    # 原价
    self.original_price = 100
    # 折扣
    self.discount = 0.8
  def get_price(self):
    # 实际价格 = 原价 * 折扣
    new_price = self.original_price * self.discount
    return new_price
  def set_price(self, value):
    self.original_price = value
  def del_price(self):
    del self.original_price
  # 类属性。 property(方法名1,方法名2,方法名3,"属性描述信息")
  PRICE = property(get_price, set_price, del_price, "属性描述信息...")
obj = Goods()
obj.PRICE     # 获取商品价格 自动调用propert()函数第一个参数指定的方法。
obj.PRICE = 200  # 设置商品原价 自动调用propert()函数第二个参数指定的方法。
desc = Goods.PRICE.__doc__ # 自动获取第四个参数中设置的值:属性描述信息...
print(desc)
del obj.PRICE   # 删除商品原价 自动调用propert()函数第三个参数指定的方法。

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python聊天程序实例代码分享
Nov 18 Python
Python切片用法实例教程
Sep 08 Python
Python中with及contextlib的用法详解
Jun 08 Python
Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息示例
Aug 21 Python
python实现外卖信息管理系统
Jan 11 Python
Python数字图像处理之霍夫线变换实现详解
Jan 12 Python
django文档学习之applications使用详解
Jan 29 Python
python内置数据类型之列表操作
Nov 12 Python
在 Python 中接管键盘中断信号的实现方法
Feb 04 Python
Python sys模块常用方法解析
Feb 20 Python
python Socket网络编程实现C/S模式和P2P
Jun 22 Python
浅谈Python描述数据结构之KMP篇
Sep 06 Python
python获取全国城市pm2.5、臭氧等空气质量过程解析
Oct 12 #Python
Python 迭代,for...in遍历,迭代原理与应用示例
Oct 12 #Python
Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】
Oct 12 #Python
Python Collatz序列实现过程解析
Oct 12 #Python
python logging日志模块原理及操作解析
Oct 12 #Python
Python爬虫之urllib基础用法教程
Oct 12 #Python
python 生成器和迭代器的原理解析
Oct 12 #Python
You might like
PHP 开发环境配置(Zend Server安装)
2010/04/28 PHP
php中防止SQL注入的最佳解决方法
2013/04/25 PHP
Windows下编译PHP5.4和xdebug全记录
2015/04/03 PHP
php+ajax实现无刷新动态加载数据技术
2015/04/28 PHP
PHP设计模式之简单工厂和工厂模式实例分析
2019/03/25 PHP
js压缩利器
2007/02/20 Javascript
javascript获得服务器端控件的ID的实现代码
2011/12/28 Javascript
jQuery实现div浮动层跟随页面滚动效果
2014/02/11 Javascript
jquery mobile动态添加元素之后不能正确渲染解决方法说明
2014/03/05 Javascript
jQuery的each循环用法简单示例
2016/06/12 Javascript
Bootstrap三种表单布局的使用方法
2016/06/21 Javascript
关于微信中a链接无法跳转问题
2016/08/02 Javascript
jQuery插件实现可输入和自动匹配的下拉框
2016/10/24 Javascript
Angularjs实现分页和分页算法的示例代码
2016/12/23 Javascript
详解vue.js移动端导航navigationbar的封装
2017/07/05 Javascript
vue组件中的数据传递方法
2018/05/14 Javascript
JSON的parse()方法介绍
2019/01/31 Javascript
vue使用el-upload上传文件及Feign服务间传递文件的方法
2019/03/15 Javascript
vue使用keep-alive保持滚动条位置的实现方法
2019/04/09 Javascript
详解Vue3中对VDOM的改进
2020/04/23 Javascript
解决Echarts 显示隐藏后宽度高度变小的问题
2020/07/19 Javascript
vue页面跳转实现页面缓存操作
2020/07/22 Javascript
[56:21]LGD vs IG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python网络编程学习笔记(四):域名系统
2014/06/09 Python
pyinstaller参数介绍以及总结详解
2019/07/12 Python
Python学习笔记之While循环用法分析
2019/08/14 Python
浅谈Pycharm最有必要改的几个默认设置项
2020/02/14 Python
英国最大的婴儿监视器网上商店:Baby Monitors Direct
2018/04/24 全球购物
Shein英国:女性时尚网上商店
2019/04/10 全球购物
培训讲师邀请函
2014/01/10 职场文书
护理专业毕业生自我鉴定总结
2014/03/24 职场文书
毕业论文评语大全
2014/04/29 职场文书
公司员工培训管理制度
2015/08/04 职场文书
如何用python插入独创性声明
2021/03/31 Python
Python 高级库15 个让新手爱不释手(推荐)
2021/05/15 Python
MySQL数据库表约束讲解
2022/06/21 MySQL