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 相关文章推荐
用map函数来完成Python并行任务的简单示例
Apr 02 Python
Django中更新多个对象数据与删除对象的方法
Jul 17 Python
利用Python读取文件的四种不同方法比对
May 18 Python
python将unicode转为str的方法
Jun 21 Python
Python调用微信公众平台接口操作示例
Jul 08 Python
用Python删除本地目录下某一时间点之前创建的所有文件的实例
Dec 14 Python
使用PyInstaller将python转成可执行文件exe笔记
May 26 Python
pyqt5利用pyqtDesigner实现登录界面
Mar 28 Python
浅析Django中关于session的使用
Dec 30 Python
Django模型中字段属性choice使用说明
Mar 30 Python
Python 使用Opencv实现目标检测与识别的示例代码
Sep 08 Python
Python闭包的定义和使用方法
Apr 11 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/02/13 PHP
php从给定url获取文件扩展名的方法
2015/03/14 PHP
javaScript 动态访问JSon元素示例代码
2013/08/30 Javascript
js中cookie的添加、取值、删除示例代码
2013/10/21 Javascript
利用进制转换压缩数字函数分享
2014/01/02 Javascript
我的Node.js学习之路(四)--单元测试
2014/07/06 Javascript
php结合imgareaselect实现图片裁剪
2015/07/05 Javascript
JS运动相关知识点小结(附弹性运动示例)
2016/01/08 Javascript
举例讲解如何判断JavaScript中对象的类型
2016/04/22 Javascript
JS onkeypress兼容性写法详解
2016/04/27 Javascript
只需五句话搞定JavaScript作用域(经典)
2016/07/26 Javascript
利用jquery实现验证输入的是否是数字、小数,包含保留几位小数
2016/12/07 Javascript
js实现功能比较全面的全选和多选
2017/03/02 Javascript
js正则表达式验证表单【完整版】
2017/03/06 Javascript
解决Webpack 热部署检测不到文件变化的问题
2018/02/22 Javascript
NodeJS 实现多语言的示例代码
2018/09/11 NodeJs
RxJS的入门指引和初步应用
2019/06/15 Javascript
[38:51]2014 DOTA2国际邀请赛中国区预选赛 Orenda VS LGD-CDEC
2014/05/22 DOTA
[01:05:00]2018国际邀请赛 表演赛 Pain vs OpenAI
2018/08/24 DOTA
python三元运算符实现方法
2013/12/17 Python
Python和perl实现批量对目录下电子书文件重命名的代码分享
2014/11/21 Python
Python 3实战爬虫之爬取京东图书的图片详解
2017/10/09 Python
python ftp 按目录结构上传下载的实现代码
2018/09/12 Python
使用python获取电脑的磁盘信息方法
2018/11/01 Python
python for和else语句趣谈
2019/07/02 Python
浅谈图像处理中掩膜(mask)的意义
2020/02/19 Python
python将dict中的unicode打印成中文实例
2020/05/11 Python
python自动从arxiv下载paper的示例代码
2020/12/05 Python
详解如何使用CSS3中的结构伪类选择器和伪元素选择器
2020/01/06 HTML / CSS
html5的pushstate以及监听浏览器返回事件的实现
2020/08/11 HTML / CSS
世界排名第一的运动鞋市场:Flight Club
2020/01/03 全球购物
公司离职证明范本(5篇)
2014/09/17 职场文书
休假证明书
2015/06/24 职场文书
2015暑假实习报告范文
2015/07/13 职场文书
暑期工社会实践报告
2015/07/13 职场文书