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 Web框架Pylons中使用MongoDB的例子
Dec 03 Python
简单介绍Ruby中的CGI编程
Apr 10 Python
python发送邮件脚本
May 22 Python
Python整数对象实现原理详解
Jul 01 Python
python实现倒计时小工具
Jul 29 Python
基于python实现学生信息管理系统
Nov 22 Python
python 画函数曲线示例
Dec 04 Python
pytorch AvgPool2d函数使用详解
Jan 03 Python
基于python3抓取pinpoint应用信息入库
Jan 08 Python
Python三维绘图之Matplotlib库的使用方法
Sep 20 Python
matplotlib交互式数据光标实现(mplcursors)
Jan 13 Python
python解包概念及实例
Feb 17 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
在WINDOWS中设置计划任务执行PHP文件的方法
2011/12/19 PHP
php实现扫描二维码根据浏览器类型访问不同下载地址
2014/10/15 PHP
PHP7标量类型declare用法实例分析
2016/09/26 PHP
php微信扫码支付 php公众号支付
2019/03/24 PHP
JavaScript检查数字是否为整数或浮点数的方法
2015/06/09 Javascript
使用vue.js开发时一些注意事项
2016/04/27 Javascript
JS中parseInt()和map()用法分析
2016/12/16 Javascript
Javascript(es2016) import和require用法和区别详解
2017/08/11 Javascript
详解如何在项目中使用jest测试react native组件
2018/02/09 Javascript
Vue 中使用富文本编译器wangEditor3的方法
2019/09/26 Javascript
ES6中let、const的区别及变量的解构赋值操作方法实例分析
2019/10/15 Javascript
Python中shape计算矩阵的方法示例
2017/04/21 Python
K-means聚类算法介绍与利用python实现的代码示例
2017/11/13 Python
Python3爬虫爬取英雄联盟高清桌面壁纸功能示例【基于Scrapy框架】
2018/12/05 Python
浅析Python 读取图像文件的性能对比
2019/03/07 Python
Python生成MD5值的两种方法实例分析
2019/04/26 Python
Python 3.8正式发布,来尝鲜这些新特性吧
2019/10/15 Python
Python使用贪婪算法解决问题
2019/10/22 Python
PyTorch中反卷积的用法详解
2019/12/30 Python
python基于property()函数定义属性
2020/01/22 Python
细数nn.BCELoss与nn.CrossEntropyLoss的区别
2020/02/29 Python
浅谈Python中os模块及shutil模块的常规操作
2020/04/03 Python
django-orm F对象的使用 按照两个字段的和,乘积排序实例
2020/05/18 Python
使用AJAX和Django获取数据的方法实例
2020/10/25 Python
Python根据URL地址下载文件并保存至对应目录的实现
2020/11/15 Python
解决pytorch 数据类型报错的问题
2021/03/03 Python
网上常见的一份Linux面试题(多项选择部分)
2014/09/09 面试题
搬家公司的创业计划书
2014/01/01 职场文书
宿舍保安职务说明书
2014/02/25 职场文书
新学期国旗下演讲稿
2014/05/08 职场文书
运动会方阵口号
2014/06/07 职场文书
应届生求职自荐信
2014/07/04 职场文书
党员民主生活会材料
2014/12/15 职场文书
公路施工安全责任书
2015/05/08 职场文书
2016年大学光棍节活动总结
2016/04/05 职场文书
nginx配置proxy_pass中url末尾带/与不带/的区别详解
2021/03/31 Servers