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基于windows平台锁定键盘输入的方法
Mar 05 Python
Python栈算法的实现与简单应用示例
Nov 01 Python
Python 找到列表中满足某些条件的元素方法
Jun 26 Python
对python中数组的del,remove,pop区别详解
Nov 07 Python
在python中对变量判断是否为None的三种方法总结
Jan 23 Python
Python实例方法、类方法、静态方法的区别与作用详解
Mar 25 Python
代码实例讲解python3的编码问题
Jul 08 Python
python批量处理文件或文件夹
Jul 28 Python
用python写爬虫简单吗
Jul 28 Python
Django DRF APIView源码运行流程详解
Aug 17 Python
Pandas替换及部分替换(replace)实现流程详解
Oct 12 Python
Python Selenium破解滑块验证码最新版(GEETEST95%以上通过率)
Jan 29 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模板技术原理【一】
2008/01/10 PHP
精美漂亮的php分页类代码
2013/04/02 PHP
php微信公众账号开发之前五个坑(一)
2016/09/18 PHP
PHP基于正则批量替换Img中src内容实现获取缩略图的功能示例
2017/06/07 PHP
PHP切割整数工具类似微信红包金额分配的思路详解
2019/09/18 PHP
在JavaScript中实现命名空间
2006/11/23 Javascript
js 手机号码合法性验证代码集合
2012/09/29 Javascript
JavaScript等比例缩放图片控制超出范围的图片
2013/08/06 Javascript
jQuery 如何先创建、再修改、后添加DOM元素
2014/05/20 Javascript
javascript实现多级联动下拉菜单的方法
2015/02/06 Javascript
Nodejs中 npm常用命令详解
2016/07/04 NodeJs
原生JavaScript实现Tooltip浮动提示框特效
2017/03/07 Javascript
bootstrapvalidator之API学习教程
2017/06/29 Javascript
js轮播图的插件化封装详解
2017/07/17 Javascript
原生JS实现小小的音乐播放器
2017/10/16 Javascript
React Native中导航组件react-navigation跨tab路由处理详解
2017/10/31 Javascript
es6 for循环中let和var区别详解
2020/01/12 Javascript
jQuery三组基本动画与自定义动画操作实例总结
2020/05/09 jQuery
解决vscode进行vue格式化,会自动补分号和双引号的问题
2020/10/26 Javascript
vue制作toast组件npm包示例代码
2020/10/29 Javascript
如何在vue中使用HTML 5 拖放API
2021/01/14 Vue.js
python3实现TCP协议的简单服务器和客户端案例(分享)
2017/06/14 Python
浅谈python3.6的tkinter运行问题
2019/02/22 Python
python爬虫之爬取百度音乐的实现方法
2019/08/24 Python
Java如何支持I18N?
2016/10/31 面试题
商务日语毕业生自荐信
2013/11/23 职场文书
怎样写好自荐信和推荐信
2013/12/26 职场文书
工程项目经理任命书
2014/06/05 职场文书
党员干部四风问题整改措施思想汇报
2014/10/12 职场文书
2014年居委会工作总结
2014/12/09 职场文书
工作经历证明范本
2015/06/15 职场文书
校园新闻稿范文
2015/07/18 职场文书
2016银行求职自荐信
2016/01/28 职场文书
python编写函数注意事项总结
2021/03/29 Python
Python 游戏大作炫酷机甲闯关游戏爆肝数千行代码实现案例进阶
2021/10/16 Python
《废话连篇——致新手》——chinapizza
2022/04/05 无线电