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实现360的字符显示界面
Feb 21 Python
python中使用smtplib和email模块发送邮件实例
Apr 22 Python
在Django的视图中使用数据库查询的方法
Jul 16 Python
tensorflow 打印内存中的变量方法
Jul 30 Python
Python Series从0开始索引的方法
Nov 06 Python
Django 路由层URLconf的实现
Dec 30 Python
浅谈python print(xx, flush = True) 全网最清晰的解释
Feb 21 Python
Python实现Wordcloud生成词云图的示例
Mar 30 Python
jupyter note 实现将数据保存为word
Apr 14 Python
python判断是空的实例分享
Jul 06 Python
Python如何实现机器人聊天
Sep 10 Python
scrapy在python爬虫中搭建出错的解决方法
Nov 22 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代码
2006/12/06 PHP
php面向对象的方法重载两种版本比较
2008/09/08 PHP
php实现首页链接查询 友情链接检查的代码
2010/01/05 PHP
php实现生成带二维码图片并强制下载功能
2018/02/24 PHP
关于取不到由location.href提交而来的上级页面地址的解决办法
2009/07/30 Javascript
jQuery解决iframe高度自适应代码
2009/12/20 Javascript
无阻塞加载脚本分析[全]
2011/01/20 Javascript
JS判断表单输入是否为空(示例代码)
2013/12/23 Javascript
使用javascript实现简单的选项卡切换
2015/01/09 Javascript
动态加载jQuery的两种方法实例分析
2015/07/17 Javascript
javascript如何实现暂停功能
2015/11/06 Javascript
AngularJS实现一次监听多个值发生的变化
2016/08/31 Javascript
针对后台列表table拖拽比较实用的jquery拖动排序
2016/10/10 Javascript
使用原生js写ajax实例(推荐)
2017/05/31 Javascript
Vue cli 引入第三方JS和CSS的常用方法分享
2018/01/20 Javascript
小程序实现授权登陆的解决方案
2018/12/02 Javascript
vue实现表单未编辑或未保存离开弹窗提示功能
2020/04/08 Javascript
JavaScript中如何调用Java方法
2020/09/16 Javascript
[49:17]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第三场 1月26日
2021/03/11 DOTA
python实现图片批量剪切示例
2014/03/25 Python
详解Python的Django框架中的中间件
2015/07/24 Python
python爬虫之百度API调用方法
2017/06/11 Python
基于随机梯度下降的矩阵分解推荐算法(python)
2018/08/31 Python
aws 通过boto3 python脚本打pach的实现方法
2020/05/10 Python
Python+unittest+DDT实现数据驱动测试
2020/11/30 Python
软件测试英文面试题
2012/10/14 面试题
2014大学生党员评议个人总结
2014/09/22 职场文书
学生上课看漫画的检讨书
2014/09/26 职场文书
意外死亡赔偿协议书
2014/10/14 职场文书
个人年终总结开头
2015/03/06 职场文书
芙蓉镇观后感
2015/06/10 职场文书
2016春季小学开学寄语
2015/12/03 职场文书
2016大学生暑期社会实践心得体会
2016/01/14 职场文书
《百分数的认识》教学反思
2016/02/19 职场文书
关于办理居住证的介绍信模板
2019/11/27 职场文书
Python基础之操作MySQL数据库
2021/05/06 Python