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搭建简易服务器分析与实现
Dec 15 Python
简单介绍Python的Tornado框架中的协程异步实现原理
Apr 23 Python
Linux CentOS7下安装python3 的方法
Jan 21 Python
PyQt5每天必学之日历控件QCalendarWidget
Apr 19 Python
tensorflow 使用flags定义命令行参数的方法
Apr 23 Python
Python实现将数据写入netCDF4中的方法示例
Aug 30 Python
numpy向空的二维数组中添加元素的方法
Nov 01 Python
Python Django框架单元测试之文件上传测试示例
May 17 Python
python实现随机漫步方法和原理
Jun 10 Python
python matplotlib库绘制条形图练习题
Aug 10 Python
基于python的docx模块处理word和WPS的docx格式文件方式
Feb 13 Python
Django-rest-framework中过滤器的定制实例
Apr 01 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实现密保卡功能实现代码<打包下载直接运行>
2011/10/09 PHP
基于php常用函数总结(数组,字符串,时间,文件操作)
2013/06/27 PHP
PHP中开启gzip压缩的2种方法
2015/01/31 PHP
php实现格式化多行文本为Js可用格式
2015/04/15 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
2018/02/23 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
2018/06/16 PHP
safari下载文件自动加了html后缀问题
2018/11/09 PHP
jQuery 中关于CSS操作部分使用说明
2007/06/10 Javascript
javascript 表格排序和表头浮动效果(扩展SortTable)
2009/04/07 Javascript
Google排名中的10个最著名的 JavaScript库
2010/04/27 Javascript
javascript中onclick(this)用法介绍
2013/04/19 Javascript
javascript中声明函数的方法及调用函数的返回值
2014/07/22 Javascript
JavaScript删除指定子元素代码实例
2015/01/13 Javascript
JavaScript对表格或元素按文本,数字或日期排序的方法
2015/05/26 Javascript
js实现微信分享代码
2020/10/11 Javascript
JavaScript的==运算详解
2016/07/20 Javascript
React-intl 实现多语言的示例代码
2017/11/03 Javascript
Vue起步(无cli)的啊教程详解
2019/04/11 Javascript
JS实现利用闭包判断Dom元素和滚动条的方向示例
2019/08/26 Javascript
jquery添加div实现消息聊天框
2020/02/08 jQuery
[04:16]完美世界DOTA2联赛PWL S2 集锦第一期
2020/11/23 DOTA
Python自定义scrapy中间模块避免重复采集的方法
2015/04/07 Python
python实现的简单RPG游戏流程实例
2015/06/28 Python
利用Python的Django框架生成PDF文件的教程
2015/07/22 Python
利用Python如何生成随机密码
2016/04/20 Python
pygame实现雷电游戏雏形开发
2018/11/20 Python
通过python实现随机交换礼物程序详解
2019/07/10 Python
python FTP批量下载/删除/上传实例
2019/12/22 Python
HTML5本地存储之Web Storage详解
2016/07/04 HTML / CSS
英国第一的滑雪服装和装备零售商:Snow+Rock
2020/02/01 全球购物
一组SQL面试题
2016/02/15 面试题
高一自我鉴定
2013/12/17 职场文书
志愿者服务感言
2014/02/27 职场文书
乡镇八一建军节活动方案
2014/08/24 职场文书
教师拔河比赛广播稿
2014/10/14 职场文书
企业财务经理岗位职责
2015/04/08 职场文书