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操作MySQL数据库具体方法
Oct 28 Python
python中字符串前面加r的作用
Jun 04 Python
使用httplib模块来制作Python下HTTP客户端的方法
Jun 19 Python
python链接Oracle数据库的方法
Jun 28 Python
numpy.std() 计算矩阵标准差的方法
Jul 11 Python
对python数据切割归并算法的实例讲解
Dec 12 Python
解决Python3 被PHP程序调用执行返回乱码的问题
Feb 16 Python
用Python识别人脸,人种等各种信息
Jul 15 Python
使用python实现kNN分类算法
Oct 16 Python
python框架flask表单实现详解
Nov 04 Python
Python绘图之柱形图绘制详解
Jul 28 Python
python缺失值的解决方法总结
Jun 09 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
解决phpmyadmin 乱码,支持gb2312和utf-8
2006/11/20 PHP
php+mysql 实现身份验证代码
2010/03/24 PHP
WampServer搭建php环境时遇到的问题汇总
2015/07/23 PHP
使用PHP接受文件并获得其后缀名的方法
2015/08/05 PHP
extjs grid取到数据而不显示的解决
2008/12/29 Javascript
写给想学习Javascript的朋友一点学习经验小结
2010/11/23 Javascript
ExtJS4 Grid改变单元格背景颜色及Column render学习
2013/02/06 Javascript
node.js中的buffer.Buffer.byteLength方法使用说明
2014/12/10 Javascript
JS通过ajax动态读取xml文件内容的方法
2015/03/24 Javascript
AngularJS中$http服务常用的应用及参数
2016/08/22 Javascript
Sortable.js拖拽排序使用方法解析
2016/11/04 Javascript
js断点调试经验分享
2017/12/08 Javascript
JS生成随机打乱数组的方法示例
2017/12/23 Javascript
AngularJS修改model值时,显示内容不变的实例
2018/09/13 Javascript
微信小程序自定义可滑动顶部TabBar选项卡实现页面切换功能示例
2019/05/14 Javascript
微信小程序利用云函数获取手机号码
2019/12/17 Javascript
基于element-ui封装可搜索的懒加载tree组件的实现
2020/05/22 Javascript
基于Electron实现桌面应用开发代码实例
2020/07/07 Javascript
Python实现简单状态框架的方法
2015/03/19 Python
Using Django with GAE Python 后台抓取多个网站的页面全文
2016/02/17 Python
Python多项式回归的实现方法
2019/03/11 Python
tensorflow实现训练变量checkpoint的保存与读取
2020/02/10 Python
完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
2020/04/01 Python
Python 中的函数装饰器和闭包详解
2021/02/06 Python
绝对令人的惊叹的CSS3折叠效果(3D效果)整理
2012/12/30 HTML / CSS
Html5新增标签有哪些
2017/04/13 HTML / CSS
英国领先的豪华时尚家居网上商店:Amara
2019/08/12 全球购物
日本整理专家Marie Kondo的官方在线商店:KonMari
2020/06/29 全球购物
用Python写一个for循环的例子
2016/07/19 面试题
毕业生精彩的自我评价分享
2013/10/06 职场文书
会计自我鉴定
2013/11/02 职场文书
毕业生如何写自我鉴定
2014/03/15 职场文书
青年文明号服务承诺
2014/03/31 职场文书
黑暗中的舞者观后感
2015/06/18 职场文书
部门主管竞聘书
2015/09/15 职场文书
2019年消防宣传标语集锦
2019/11/21 职场文书