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用fork来创建子进程注意事项
Jul 03 Python
python奇偶行分开存储实现代码
Mar 19 Python
python字符串与url编码的转换实例
May 10 Python
python爬取网页内容转换为PDF文件
Jul 28 Python
python 检查文件mime类型的方法
Dec 08 Python
Python两个字典键同值相加的几种方法
Mar 05 Python
详解Python的循环结构知识点
May 20 Python
python如果快速判断数字奇数偶数
Nov 13 Python
python函数不定长参数使用方法解析
Dec 14 Python
Python3 用什么IDE开发工具比较好
Nov 28 Python
Python使用Web框架Flask开发项目
Jun 01 Python
Python sklearn分类决策树方法详解
Sep 23 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编码转换
2012/11/05 PHP
微信公众平台开发之天气预报功能
2015/08/31 PHP
Symfony实现行为和模板中取得request参数的方法
2016/03/17 PHP
验证token、回复图文\文本、推送消息的实用微信类php代码
2016/06/28 PHP
jquery autocomplete自动完成插件的的使用方法
2010/08/07 Javascript
基于jquery的loading效果实现代码
2010/11/05 Javascript
精选的10款用于构建良好易用性网站的jQuery插件
2011/01/23 Javascript
javascript学习笔记(十六) 系统对话框(alert、confirm、prompt)
2012/06/20 Javascript
JS获取地址栏参数的小例子
2013/08/23 Javascript
Javascript 鼠标移动上去 滑块跟随效果代码分享
2013/11/23 Javascript
jquery和js实现对div的隐藏和显示方法
2014/09/26 Javascript
AngularJS自定义服务与fliter的混合使用
2016/11/24 Javascript
微信小程序 登录实例详解
2017/01/16 Javascript
原生JS实现萤火虫效果
2020/03/07 Javascript
[01:46]新英雄登场
2019/09/10 DOTA
Python中实现远程调用(RPC、RMI)简单例子
2014/04/28 Python
零基础写python爬虫之使用urllib2组件抓取网页内容
2014/11/04 Python
浅谈Python中的数据类型
2015/05/05 Python
利用numpy+matplotlib绘图的基本操作教程
2017/05/03 Python
使用python画个小猪佩奇的示例代码
2018/06/06 Python
Django框架实现的简单分页功能示例
2018/12/04 Python
浅析python3字符串格式化format()函数的简单用法
2018/12/07 Python
Python pycharm 同时加载多个项目的方法
2019/01/17 Python
基于python检查SSL证书到期情况代码实例
2020/04/04 Python
Python爬虫之Selenium鼠标事件的实现
2020/12/04 Python
CSS3制作皮卡丘动画壁纸的示例
2020/11/02 HTML / CSS
波兰最大的儿童服装连锁店之一:5.10.15.
2018/02/11 全球购物
聪明的粉丝购买门票的地方:TickPick
2018/03/09 全球购物
水污染治理专业毕业生推荐信
2013/11/14 职场文书
优秀通讯员事迹材料
2014/01/28 职场文书
教学改革实施方案
2014/03/31 职场文书
青安岗事迹材料
2014/05/14 职场文书
学生个人评语大全
2015/01/04 职场文书
幼儿园万圣节活动总结
2015/05/05 职场文书
中考百日冲刺决心书
2015/09/22 职场文书
基于python的matplotlib制作双Y轴图
2021/04/20 Python