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进行新浪微博的mid和url互相转换实例(10进制和62进制互算)
Apr 25 Python
安装Python的web.py框架并从hello world开始编程
Apr 25 Python
使用rst2pdf实现将sphinx生成PDF
Jun 07 Python
python中urlparse模块介绍与使用示例
Nov 19 Python
Python用61行代码实现图片像素化的示例代码
Dec 10 Python
解决python3中的requests解析中文页面出现乱码问题
Apr 19 Python
Python定义函数时参数有默认值问题解决
Dec 19 Python
pytorch 图像预处理之减去均值,除以方差的实例
Jan 02 Python
Python字典添加,删除,查询等相关操作方法详解
Feb 07 Python
python3 正则表达式基础廖雪峰
Mar 25 Python
keras使用Sequence类调用大规模数据集进行训练的实现
Jun 22 Python
python如何编写类似nmap的扫描工具
Nov 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电台频率大全 - 10 江苏省
2020/03/11 无线电
PHP使用fopen与file_get_contents读取文件实例分享
2016/03/04 PHP
php中文乱码问题的终极解决方案汇总
2017/08/01 PHP
理解JAVASCRIPT中hasOwnProperty()的作用
2013/06/05 Javascript
jqgrid 编辑添加功能详细解析
2013/11/08 Javascript
JS实现不规则TAB选项卡效果代码
2015/09/16 Javascript
jQuery实现的经典竖向伸缩菜单效果代码
2015/09/24 Javascript
详解javascript传统方法实现异步校验
2016/01/22 Javascript
JavaScript九九乘法口诀表的简单实现
2016/10/04 Javascript
Javascript实现汉字和拼音互转的终极方案
2016/10/19 Javascript
网页挂马方式整理及详细介绍
2016/11/03 Javascript
AngularJS自定义指令之复制指令实现方法
2017/05/18 Javascript
微信小程序 跳转传递数据的实例
2017/07/06 Javascript
浅谈在Vue-cli里基于axios封装复用请求
2017/11/06 Javascript
nodejs async异步常用函数总结(推荐)
2017/11/17 NodeJs
vue指令v-html使用过滤器filters功能实例
2019/10/25 Javascript
[07:37]DOTA2-DPC中国联赛2月2日Recap集锦
2021/03/11 DOTA
python访问sqlserver示例
2014/02/10 Python
python3下使用cv2.imwrite存储带有中文路径图片的方法
2018/05/10 Python
python 给DataFrame增加index行名和columns列名的实现方法
2018/06/08 Python
解决Python安装后pip不能用的问题
2018/06/12 Python
python实现求特征选择的信息增益
2018/12/18 Python
python使用SQLAlchemy操作MySQL
2020/01/02 Python
Python 开发工具PyCharm安装教程图文详解(新手必看)
2020/02/28 Python
python 数据库查询返回list或tuple实例
2020/05/15 Python
详解numpy1.19.4与python3.9版本冲突解决
2020/12/15 Python
玩转CSS3色彩
2010/01/16 HTML / CSS
H5离线存储Manifest原理及使用
2020/04/28 HTML / CSS
音乐系毕业生自荐信
2013/10/27 职场文书
大学生职业生涯规划方案
2014/01/03 职场文书
法学专业自我鉴定
2014/02/05 职场文书
2014年大学生党员评议表自我评价
2014/09/20 职场文书
2014年幼儿园教师工作总结
2014/11/08 职场文书
2014年司法所工作总结
2014/11/22 职场文书
2016年学校爱国卫生月活动总结
2016/04/06 职场文书
在项目中使用redis做缓存的一些思路
2021/09/14 Redis