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程序的方法
Apr 21 Python
python通过shutil实现快速文件复制的方法
Mar 14 Python
python运行时间的几种方法
Jun 17 Python
Python IDLE 错误:IDLE''s subprocess didn''t make connection 的解决方案
Feb 13 Python
详解使用python的logging模块在stdout输出的两种方法
May 17 Python
如何使用 Pylint 来规范 Python 代码风格(来自IBM)
Apr 06 Python
python检测文件夹变化,并拷贝有更新的文件到对应目录的方法
Oct 17 Python
Python单元和文档测试实例详解
Apr 11 Python
python 如何将数据写入本地txt文本文件的实现方法
Sep 11 Python
Python流程控制常用工具详解
Feb 24 Python
python实现用户名密码校验
Mar 18 Python
python 标准库原理与用法详解之os.path篇
Oct 24 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设置静态内容缓存时间的方法
2014/12/01 PHP
php异常处理方法实例汇总
2015/06/24 PHP
php生成4位数字验证码的实现代码
2015/11/23 PHP
javascript动态判断html元素并执行不同的操作
2014/06/16 Javascript
Extjs根据条件设置表格某行背景色示例
2014/07/23 Javascript
使用focus方法让光标默认停留在INPUT框
2014/07/29 Javascript
jQuery给多个不同元素添加class样式的方法
2015/03/26 Javascript
js实现完美兼容各大浏览器的人民币大小写相互转换
2015/10/29 Javascript
jQuery实用技巧必备(下)
2015/11/03 Javascript
简要了解jQuery移动web开发的响应式布局设计
2015/12/04 Javascript
js实现网页图片延时加载 提升网页打开速度
2016/01/26 Javascript
jQuery 获取多选框的值及多选框中文的函数
2016/05/16 Javascript
React Native实现简单的登录功能(推荐)
2016/09/19 Javascript
Bootstrap Modal对话框如何在关闭时触发事件
2016/12/02 Javascript
Vue filter格式化时间戳时间成标准日期格式的方法
2018/09/16 Javascript
CSS3 动画卡顿性能优化的完美解决方案
2018/09/20 Javascript
发布Angular应用至生产环境的方法
2018/12/10 Javascript
JavaScript数据结构与算法之二叉树插入节点、生成二叉树示例
2019/02/21 Javascript
基于JavaScript实现表格隔行换色
2020/05/08 Javascript
Vue toFixed保留两位小数的3种方式
2020/10/23 Javascript
JS实现简易日历效果
2021/01/25 Javascript
[00:32]2018DOTA2亚洲邀请赛出场——VP
2018/04/04 DOTA
phpsir 开发 一个检测百度关键字网站排名的python 程序
2009/09/17 Python
Python button选取本地图片并显示的实例
2019/06/13 Python
使用python将mysql数据库的数据转换为json数据的方法
2019/07/01 Python
Tensorflow 实现释放内存
2020/02/03 Python
python中Mako库实例用法
2020/12/31 Python
CSS3制作酷炫的条纹背景
2017/11/09 HTML / CSS
HTML5拖放API实现拖放排序的实例代码
2017/05/11 HTML / CSS
汽车运用工程毕业生自荐信
2013/10/29 职场文书
中介公司区域经理岗位职责范本
2014/03/02 职场文书
求职意向书范文
2014/04/01 职场文书
娱乐节目策划方案
2014/06/10 职场文书
群众路线剖析材料
2014/09/30 职场文书
篮球友谊赛通讯稿
2014/10/10 职场文书
Python机器学习之基础概述
2021/05/19 Python