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正则表达式操作指南(re使用)
Sep 06 Python
浅谈python中set使用
Jun 30 Python
python中requests使用代理proxies方法介绍
Oct 25 Python
Python实现按特定格式对文件进行读写的方法示例
Nov 30 Python
python opencv实现旋转矩形框裁减功能
Jul 25 Python
Selenium chrome配置代理Python版的方法
Nov 29 Python
python 使用正则表达式按照多个空格分割字符的实例
Dec 20 Python
Flask框架踩坑之ajax跨域请求实现
Feb 22 Python
python使用thrift教程的方法示例
Mar 21 Python
通过实例了解python property属性
Nov 01 Python
Python实现的北京积分落户数据分析示例
Mar 27 Python
python数据分析之用sklearn预测糖尿病
Apr 22 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
Yii净化器CHtmlPurifier用法示例(过滤不良代码)
2016/07/15 PHP
yii2实现Ueditor百度编辑器的示例代码
2018/11/02 PHP
在 Laravel 6 中缓存数据库查询结果的方法
2019/12/11 PHP
PHP如何开启Opcache功能提升程序处理效率
2020/04/27 PHP
一些常用的JS功能函数代码
2009/06/23 Javascript
JQuery UI的拖拽功能实现方法小结
2012/03/14 Javascript
js动态修改表格行colspan列跨度的方法
2015/03/30 Javascript
jQuery解析json数据实例分析
2015/11/24 Javascript
jquery对象和DOM对象的任意相互转换
2016/02/21 Javascript
jQuery实现表格元素动态创建功能
2017/01/09 Javascript
微信小程序scroll-view实现横向滚动和上拉加载示例
2017/03/06 Javascript
微信小程序开发之好友列表字母列表跳转对应位置
2017/09/26 Javascript
简单谈谈vue的过渡动画(推荐)
2017/10/11 Javascript
webpack配置之后端渲染详解
2017/10/26 Javascript
详解nodejs 配置文件处理方案
2019/01/02 NodeJs
layui prompt 设置允许空白提交的方法
2019/09/24 Javascript
Java Varargs 可变参数用法详解
2020/01/28 Javascript
vue 组件简介
2020/07/31 Javascript
Openlayers实现图形绘制
2020/09/28 Javascript
[10:14]2018DOTA2国际邀请赛寻真——paiN Gaming不仅为自己而战
2018/08/14 DOTA
python实现问号表达式(?)的方法
2013/11/27 Python
Python中常用操作字符串的函数与方法总结
2016/02/04 Python
CentOS7.3编译安装Python3.6.2的方法
2018/01/22 Python
详解tf.device()指定tensorflow运行的GPU或CPU设备实现
2021/02/20 Python
html5的websockets全双工通信详解学习示例
2014/02/26 HTML / CSS
处理textarea中的换行和空格
2019/12/12 HTML / CSS
全球最大的中文旅行网站:去哪儿网
2017/11/16 全球购物
微软中国官方商城:Microsoft Store中国
2018/10/12 全球购物
为什么要有struct关键字
2012/05/08 面试题
《狮子和兔子》教学反思
2014/03/02 职场文书
太太口服液广告词
2014/03/20 职场文书
幼儿园大班家长评语
2014/04/17 职场文书
竞选班干部演讲稿
2014/04/24 职场文书
幼儿园教师师德师风承诺书
2015/04/28 职场文书
授权协议书范本(3篇)
2019/10/15 职场文书
http通过StreamingHttpResponse完成连续的数据传输长链接方式
2022/02/12 Python