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 相关文章推荐
50行代码实现贪吃蛇(具体思路及代码)
Apr 27 Python
Python搭建APNS苹果推送通知推送服务的相关模块使用指南
Jun 02 Python
Python外星人入侵游戏编程完整版
Mar 30 Python
利用python微信库itchat实现微信自动回复功能
May 18 Python
pip安装Python库时遇到的问题及解决方法
Nov 23 Python
Python使用pip安装报错:is not a supported wheel on this platform的解决方法
Jan 23 Python
Python3爬虫教程之利用Python实现发送天气预报邮件
Dec 16 Python
Python 监测文件是否更新的方法
Jun 10 Python
利用Python复制文件的9种方法总结
Sep 02 Python
如何基于matlab相机标定导出xml文件
Nov 02 Python
Python 微信公众号文章爬取的示例代码
Nov 30 Python
python 生成正态分布数据,并绘图和解析
Dec 21 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
分享PHP函数实现数字与文字分页代码
2015/07/28 PHP
php反射类ReflectionClass用法分析
2016/05/12 PHP
php实现登录tplink WR882N获取IP和重启的方法
2016/07/20 PHP
php curl优化下载微信头像的方法总结
2018/09/07 PHP
jQuery技巧大放送 学习jquery的朋友可以看下
2009/10/14 Javascript
javascript鼠标滑过显示二级菜单特效
2020/11/18 Javascript
javaScript基础详解
2017/01/19 Javascript
手把手搭建安装基于windows的Vue.js运行环境
2017/06/12 Javascript
vue按需引入element Transfer 穿梭框
2017/09/30 Javascript
Angular2进阶之如何避免Dom误区
2018/04/02 Javascript
vue中$refs的用法及作用详解
2018/04/24 Javascript
Vue 开发音乐播放器之歌手页右侧快速入口功能
2018/08/08 Javascript
jQuery实现的五星点评功能【案例】
2019/02/18 jQuery
JS监听组合按键思路及实现过程
2020/04/17 Javascript
浅谈vue中document.getElementById()拿到的是原值的问题
2020/07/26 Javascript
JS实现页面鼠标点击出现图片特效
2020/08/19 Javascript
[02:43]中国五虎出征TI3视频
2013/08/02 DOTA
Python文档生成工具pydoc使用介绍
2015/06/02 Python
Python过滤列表用法实例分析
2016/04/29 Python
利用python获取某年中每个月的第一天和最后一天
2016/12/15 Python
python遍历序列enumerate函数浅析
2017/10/17 Python
Python实现的求解最小公倍数算法示例
2018/05/03 Python
python sys.argv[]用法实例详解
2018/05/25 Python
Flask框架URL管理操作示例【基于@app.route】
2018/07/23 Python
python处理multipart/form-data的请求方法
2018/12/26 Python
解决python测试opencv时imread导致的错误问题
2019/01/26 Python
利用Opencv实现图片的油画特效实例
2021/02/28 Python
详解WebSocket跨域问题解决
2018/08/06 HTML / CSS
美国著名童装品牌:OshKosh B’gosh
2016/08/05 全球购物
如何用Java判断一个文件或目录是否存在
2012/11/19 面试题
师范生教师实习自我鉴定
2013/09/27 职场文书
新学期红领巾广播稿
2014/01/14 职场文书
四风问题自我剖析材料
2014/10/07 职场文书
未婚证明范本
2015/06/15 职场文书
手把手教你使用TensorFlow2实现RNN
2021/07/15 Python
python Django框架快速入门教程(后台管理)
2021/07/21 Python