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 相关文章推荐
Django中实现一个高性能计数器(Counter)实例
Jul 09 Python
python基础教程之Hello World!
Aug 29 Python
12步教你理解Python装饰器
Feb 25 Python
python 读写、创建 文件的方法(必看)
Sep 12 Python
python实现的多线程端口扫描功能示例
Jan 21 Python
Python 安装setuptools和pip工具操作方法(必看)
May 22 Python
Python3中的json模块使用详解
May 05 Python
python生成九宫格图片
Nov 19 Python
在python中利用GDAL对tif文件进行读写的方法
Nov 29 Python
Flask框架工厂函数用法实例分析
May 25 Python
Python编程快速上手——正则表达式查找功能案例分析
Feb 28 Python
利用python生成照片墙的示例代码
Apr 09 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 MYSQL 数据备份类
2009/06/19 PHP
PHP 字符串正则替换函数preg_replace使用说明
2011/07/15 PHP
php使用ICQ网关发送手机短信
2013/10/30 PHP
php使浏览器直接下载pdf文件的方法
2013/11/15 PHP
使用PHP如何实现高效安全的ftp服务器(二)
2015/12/30 PHP
用正则表达式替换图片地址img标签
2013/11/22 Javascript
JQuery EasyUI 加载两次url的原因分析及解决方案
2014/08/18 Javascript
jquery中使用循环下拉菜单示例代码
2014/09/24 Javascript
JavaScript实现的圆形浮动标签云效果实例
2015/08/06 Javascript
自己动手写的jquery分页控件(非常简单实用)
2015/10/28 Javascript
JavaScript自学笔记(必看篇)
2016/06/23 Javascript
Bootstrap CSS布局之表单
2016/12/17 Javascript
vue spa应用中的路由缓存问题与解决方案
2019/05/31 Javascript
vue中使用WX-JSSDK的两种方法(推荐)
2020/01/18 Javascript
javascript实现滚动条效果
2020/03/24 Javascript
浅谈JavaScript 声明提升
2020/09/14 Javascript
[00:36]DOTA2上海特级锦标赛 Archon战队宣传片
2016/03/04 DOTA
多线程爬虫批量下载pcgame图片url 保存为xml的实现代码
2013/01/17 Python
python学习笔记--将python源文件打包成exe文件(pyinstaller)
2018/05/26 Python
使用django-guardian实现django-admin的行级权限控制的方法
2018/10/30 Python
python3 cvs将数据读取为字典的方法
2018/12/22 Python
关于Pytorch的MLP模块实现方式
2020/01/07 Python
Python基于requests库爬取网站信息
2020/03/02 Python
Python使用扩展库pywin32实现批量文档打印实例
2020/04/09 Python
python中append函数用法讲解
2020/12/11 Python
HTML5 通过Vedio标签实现视频循环播放的示例代码
2020/08/05 HTML / CSS
英国虚拟主机服务商:eUKhost
2016/08/16 全球购物
人事主管的岗位职责
2013/11/16 职场文书
平面设计岗位职责
2013/12/14 职场文书
党的群众路线教育实践活动心得体会
2014/03/03 职场文书
精彩的演讲稿开头
2014/05/08 职场文书
党支部党的群众路线对照检查材料
2014/09/24 职场文书
党的群众路线教育实践活动心得体会(企业)
2014/11/03 职场文书
2016新年问候语大全
2015/11/11 职场文书
工作转正自我鉴定范文
2019/06/21 职场文书
解决Tkinter中button按钮未按却主动执行command函数的问题
2021/05/23 Python