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内置的字符串处理函数整理
Jan 29 Python
Python基于二分查找实现求整数平方根的方法
May 12 Python
python 简单的绘图工具turtle使用详解
Jun 21 Python
简单了解Django模板的使用
Dec 20 Python
使用Python写一个小游戏
Apr 02 Python
Python比较2个时间大小的实现方法
Apr 10 Python
python按比例随机切分数据的实现
Jul 11 Python
python 爬取学信网登录页面的例子
Aug 13 Python
python+selenium+PhantomJS抓取网页动态加载内容
Feb 25 Python
python使用PIL剪切和拼接图片
Mar 23 Python
使用python计算三角形的斜边例子
Apr 15 Python
python 利用opencv实现图像网络传输
Nov 12 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 rawurlencode与urlencode函数的深入分析
2013/06/08 PHP
php mb_substr()函数截取中文字符串应用示例
2014/07/29 PHP
ThinkPHP的SAE开发相关注意事项详解
2016/10/09 PHP
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
2016/12/14 PHP
将nodejs打包工具整合到鼠标右键的方法
2013/05/11 NodeJs
用javascript替换URL中的参数值示例代码
2014/01/27 Javascript
JQuery中使文本框获得焦点的方法实例分析
2015/02/28 Javascript
浅谈javascript中return语句
2015/07/15 Javascript
Bootstrap树形组件jqTree的简单封装
2016/01/25 Javascript
Bootstrap三种表单布局的使用方法
2016/06/21 Javascript
mpvue构建小程序的方法(步骤+地址)
2018/05/22 Javascript
vue实现在一个方法执行完后执行另一个方法的示例
2018/08/25 Javascript
使用webpack4编译并压缩ES6代码的方法示例
2019/04/24 Javascript
layui实现下拉复选功能的例子(包括数据的回显与上传)
2019/09/24 Javascript
vue-cli基础配置及webpack配置修改的完整步骤
2019/10/20 Javascript
如何基于layui的laytpl实现数据绑定的示例代码
2020/04/10 Javascript
vue2.0 解决抽取公用js的问题
2020/07/31 Javascript
使用Python导出Excel图表以及导出为图片的方法
2015/11/07 Python
在pycharm中使用git版本管理以及同步github的方法
2019/01/16 Python
python+pyqt5实现KFC点餐收银系统
2019/01/24 Python
python使用flask与js进行前后台交互的例子
2019/07/19 Python
python logging模块书写日志以及日志分割详解
2019/07/22 Python
文件上传服务器-jupyter 中python解压及压缩方式
2020/04/22 Python
浅谈python处理json和redis hash的坑
2020/07/16 Python
浅析Python 责任链设计模式
2020/09/11 Python
学生如何注册Pycharm专业版以及pycharm的安装
2020/09/24 Python
美国首屈一指的礼品篮供应商:GiftTree
2018/01/06 全球购物
计算机科学与技术应届生求职信
2013/11/07 职场文书
税务会计岗位职责
2014/02/18 职场文书
国培远程培训感言
2014/03/08 职场文书
聚美优品恶搞广告词
2014/03/14 职场文书
高中教师评语大全
2014/04/25 职场文书
留学经费担保书
2014/05/12 职场文书
收银员岗位职责
2015/02/03 职场文书
工作简报格式范文
2015/07/21 职场文书
详细介绍MySQL中limit和offset的用法
2022/05/06 MySQL