Python高级property属性用法实例分析


Posted in Python onNovember 19, 2019

本文实例讲述了Python高级property属性用法。分享给大家供大家参考,具体如下:

property属性

1.property属性:

是一个提高开发者用户体验度的属性,可以将一个函数改造的像属性一样。

例:

# 定义的时候像是一个函数 使用的时候和属性的方式是以样的
class Foo(object):
  @property
  def money(self):
    return 100
# f = Foo()
# m = f.money()
# print(m)
f = Foo()
print(f.money)

执行结果:

Python高级property属性用法实例分析

2.property简单应用:

例:根据当前页数和每页显示数据条数,计算出该页起始编号和结尾编号

class Pager:
  def __init__(self, current_page):
    # 用户当前请求的页码(第一页、第二页...)
    self.current_page = current_page
    # 每页默认显示100条数据
    self.per_items = 100
  @property
  def start(self):
    val = (self.current_page - 1) * self.per_items + 1
    return val
  @property
  def end(self):
    val = self.current_page * self.per_items
    return val
p = Pager(2)
print(p.start)
print(p.end)

执行结果:

Python高级property属性用法实例分析

3.装饰器方式:在方法上应用装饰器

三种@property装饰器:

class Goods:
  @property
  def price(self):
    print('@property')
  @price.setter
  def price(self, value):
    print('@price.setter')
  @price.deleter
  def price(self):
    print('@price.deleter')
# ############### 调用 ###############
obj = Goods()
obj.price     # 自动执行 @property 修饰的 price 方法,并获取方法的返回值
obj.price = 123  # 自动执行 @price.setter 修饰的 price 方法,并将 123 赋值给方法的参数
del obj.price   # 自动执行 @price.deleter 修饰的 price 方法

例:

class Goods(object):
  def __init__(self):
    self.org_price = 1000 # 价格
    self.discount = 0.7 # 折扣
  @property
  def price(self):
    val = self.org_price * self.discount
    # 返回价格*折扣
    return val
  @price.setter
  def price(self, new_val):
    # 接收val,将价格修改为val
    self.org_price = new_val
  @price.deleter
  def price(self):
    # 将折扣修改为1(删掉折扣)
    self.discount = 1
g = Goods()
print(g.price)
g.price = 2000
print(g.price)
del g.price
print(g.price)

执行结果:

Python高级property属性用法实例分析

4.类属性方式:在类中定义值为property对象的类属性

属性名 = property(获取, 修改, 删除, 备注)

例:

class Goods(object):
  def __init__(self):
    self.org_price = 1000 # 价格
    self.discount = 0.7 # 折扣
  def get_price(self):
    val = self.org_price * self.discount
    # 返回价格*折扣
    return val
  def set_price(self, new_val):
    # 接收new_val,将价格修改为new_val
    self.org_price = new_val
  def del_price(self):
    # 将折扣修改为1(删掉折扣)
    self.discount = 1
  price = property(get_price, set_price, del_price, "备注:价格")
g = Goods()
print(g.price) # 获取商品价格
g.price = 2000 # 修改商品价格
print(g.price) 
del g.price # 删除商品折扣
print(g.price)
print(Goods.price.__doc__)

执行结果:

Python高级property属性用法实例分析

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
使用优化器来提升Python程序的执行效率的教程
Apr 02 Python
Python使用正则表达式过滤或替换HTML标签的方法详解
Sep 25 Python
Python和Go语言的区别总结
Feb 20 Python
使用Python和Prometheus跟踪天气的使用方法
May 06 Python
python的debug实用工具 pdb详解
Jul 12 Python
python可视化篇之流式数据监控的实现
Aug 07 Python
通过Turtle库在Python中绘制一个鼠年福鼠
Feb 03 Python
Python通过Tesseract库实现文字识别
Mar 05 Python
python 在threading中如何处理主进程和子线程的关系
Apr 25 Python
Python爬取阿拉丁统计信息过程图解
May 12 Python
Django中F函数的使用示例代码详解
Jul 06 Python
python openssl模块安装及用法
Dec 06 Python
wxPython之wx.DC绘制形状
Nov 19 #Python
python matplotlib拟合直线的实现
Nov 19 #Python
Python线程指南分享
Nov 19 #Python
wxpython+pymysql实现用户登陆功能
Nov 19 #Python
pygame编写音乐播放器的实现代码示例
Nov 19 #Python
pyinstaller打包程序exe踩过的坑
Nov 19 #Python
基于Python中的yield表达式介绍
Nov 19 #Python
You might like
全国FM电台频率大全 - 2 天津市
2020/03/11 无线电
PHP表单提交表单名称含有点号(.)则会被转化为下划线(_)
2011/12/14 PHP
简单的方法让你的后台登录更加安全(php中加session验证)
2012/08/22 PHP
PHP实现批量生成App各种尺寸Logo
2015/03/19 PHP
PHP 返回13位时间戳的实现代码
2016/05/13 PHP
使用jQuery插件创建常规模态窗口登陆效果
2013/08/23 Javascript
js去除空格的12种实用方法
2013/11/08 Javascript
jQuery 插件开发指南
2014/11/14 Javascript
jquery+html5烂漫爱心表白动画代码分享
2015/08/24 Javascript
理解JS事件循环
2016/01/07 Javascript
浅谈javascript中关于日期和时间的基础知识
2016/07/13 Javascript
AngularJs表单验证实例代码解析
2016/11/29 Javascript
使用vue构建一个上传图片表单
2017/07/04 Javascript
jQuery简单实现对数组去重及排序操作实例
2017/10/31 jQuery
详解Ubuntu安装angular-cli遇到的坑
2018/09/08 Javascript
每周一练 之 数据结构与算法(Stack)
2019/04/16 Javascript
深入浅析Vue 中 ref 的使用
2019/04/29 Javascript
Vue使用JSEncrypt实现rsa加密及挂载方法
2020/02/07 Javascript
python处理图片之PIL模块简单使用方法
2015/05/11 Python
python抓取网页中图片并保存到本地
2015/12/01 Python
对python中两种列表元素去重函数性能的比较方法
2018/06/29 Python
Python如何获得百度统计API的数据并发送邮件示例代码
2019/01/27 Python
python 实现识别图片上的数字
2019/07/30 Python
Python下opencv图像阈值处理的使用笔记
2019/08/04 Python
Python GUI库PyQt5图形和特效样式QSS介绍
2020/02/25 Python
Python如何基于Tesseract实现识别文字功能
2020/06/05 Python
html5教程制作简单画板代码分享
2013/12/04 HTML / CSS
JD Sports德国官网:英国领先的运动鞋和运动服饰零售商
2018/02/26 全球购物
俄罗斯在线大型超市:ТутПросто
2021/01/08 全球购物
汽车销售顾问求职自荐信
2014/01/01 职场文书
初中体育教学反思
2014/01/14 职场文书
优秀团干部个人事迹
2014/05/29 职场文书
2015年女生节活动总结
2015/02/27 职场文书
婚姻出轨保证书
2015/05/08 职场文书
化验室安全管理制度
2015/08/06 职场文书
postgres之jsonb属性的使用操作
2021/06/23 PostgreSQL