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使用爬虫猜密码
Feb 19 Python
Python的shutil模块中文件的复制操作函数详解
Jul 05 Python
Python中模块string.py详解
Mar 12 Python
Windows平台Python连接sqlite3数据库的方法分析
Jul 12 Python
儿童python练习实例
May 27 Python
Python面向对象实现一个对象调用另一个对象操作示例
Apr 08 Python
python实现对图片进行旋转,放缩,裁剪的功能
Aug 07 Python
Python 元组拆包示例(Tuple Unpacking)
Dec 24 Python
解析PyCharm Python运行权限问题
Jan 08 Python
基于TensorFlow中自定义梯度的2种方式
Feb 04 Python
对PyTorch中inplace字段的全面理解
May 22 Python
python pandas 解析(读取、写入)CSV 文件的操作方法
Dec 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
全国FM电台频率大全 - 1 北京市
2020/03/11 无线电
PHP连接SQLServer2005 的问题解决方法
2010/07/19 PHP
input file获得文件根目录简单实现
2013/04/26 PHP
使用PHP和JavaScript判断请求是否来自微信内浏览器
2015/08/18 PHP
求帮忙修改个php curl模拟post请求内容后并下载文件的解决思路
2015/09/20 PHP
php短信接口代码
2016/05/13 PHP
JS中动态添加事件(绑定事件)的代码
2011/01/09 Javascript
JavaScript高级程序设计 阅读笔记(十八) js跨平台的事件
2012/08/14 Javascript
利用jQuary实现文字浮动提示效果示例代码
2013/12/26 Javascript
jQuery实现的感应鼠标悬停图片色彩渐显效果
2015/03/03 Javascript
JavaScript数组各种常见用法实例分析
2015/08/04 Javascript
js 实现获取name 相同的页面元素并循环遍历的方法
2017/02/14 Javascript
vue.js 初体验之Chrome 插件开发实录
2017/05/13 Javascript
vue中改变选中当前项的显示隐藏或者状态的实现方法
2018/02/08 Javascript
Vue项目分环境打包的实现步骤
2018/04/02 Javascript
微信小程序实现倒计时补零功能
2018/07/09 Javascript
对VUE中的对象添加属性
2018/09/18 Javascript
理解Python中的With语句
2015/02/02 Python
用Python的SimPy库简化复杂的编程模型的介绍
2015/04/13 Python
python爬虫入门教程--HTML文本的解析库BeautifulSoup(四)
2017/05/25 Python
浅谈Python peewee 使用经验
2017/10/20 Python
python实现机械分词之逆向最大匹配算法代码示例
2017/12/13 Python
TensorFlow高效读取数据的方法示例
2018/02/06 Python
Python3中的json模块使用详解
2018/05/05 Python
python判断一个数是否能被另一个整数整除的实例
2018/12/12 Python
Python print不能立即打印的解决方式
2020/02/19 Python
Matplotlib中%matplotlib inline如何使用
2020/07/28 Python
Python实现上下文管理器的方法
2020/08/07 Python
python 实现一个图形界面的汇率计算器
2020/11/09 Python
移动端Html5中百度地图的点击事件
2019/01/31 HTML / CSS
写出二分查找算法的两种实现
2013/05/13 面试题
护理毕业生自我鉴定
2014/02/11 职场文书
解除劳动合同协议书范本
2014/09/13 职场文书
2014年学生会干事工作总结
2014/11/07 职场文书
廉洁自律承诺书范文
2015/04/28 职场文书
Golang解析JSON对象
2022/04/30 Golang