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实现爬虫下载漫画示例
Feb 16 Python
用python代码做configure文件
Jul 20 Python
关于numpy中np.nonzero()函数用法的详解
Feb 07 Python
python anaconda 安装 环境变量 升级 以及特殊库安装的方法
Jun 21 Python
Python高级特性切片(Slice)操作详解
Sep 27 Python
python实现键盘控制鼠标移动
Nov 27 Python
python代码 输入数字使其反向输出的方法
Dec 22 Python
浅谈Python的条件判断语句if/else语句
Mar 21 Python
Python 解决OPEN读文件报错 ,路径以及r的问题
Dec 19 Python
Django 解决model 反向引用中的related_name问题
May 19 Python
Python如何利用正则表达式爬取网页信息及图片
Apr 17 Python
python人工智能human learn绘图可创建机器学习模型
Nov 23 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
分割GBK中文遭遇乱码的解决方法
2013/08/09 PHP
php表单处理操作
2017/11/16 PHP
TP5框架实现一次选择多张图片并预览的方法示例
2020/04/04 PHP
JS DOM 操作实现代码
2010/08/01 Javascript
JQuery将文本转化成JSON对象需要注意的问题
2011/05/09 Javascript
用JQUERY增删元素的代码
2012/02/14 Javascript
js和jquery中循环的退出和继续下一个循环
2014/09/03 Javascript
深入理解JavaScript系列(36):设计模式之中介者模式详解
2015/03/04 Javascript
jQuery使用hide方法隐藏指定元素class样式用法实例
2015/03/30 Javascript
JavaScript获取数组最小值和最大值的方法
2015/06/09 Javascript
浅谈jquery.fn.extend与jquery.extend区别
2015/07/13 Javascript
深入理解JavaScript函数参数(推荐)
2016/07/26 Javascript
layer子层给父层页面元素赋值,以达到向父层页面传值的效果实例
2017/09/22 Javascript
深入浅析javascript继承体系
2017/10/23 Javascript
深入理解JS中Number(),parseInt(),parseFloat()三者比较
2018/08/24 Javascript
解决Idea、WebStorm下使用Vue cli脚手架项目无法使用Webpack别名的问题
2019/10/11 Javascript
vue实现登录拦截
2020/06/29 Javascript
[59:44]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 paiN vs iG
2018/03/31 DOTA
linux系统使用python监控apache服务器进程脚本分享
2014/01/15 Python
python中map()与zip()操作方法
2016/02/27 Python
python数据结构之链表详解
2017/09/12 Python
python 读取txt,json和hdf5文件的实例
2018/06/05 Python
python3实现钉钉消息推送的方法示例
2019/03/14 Python
详解Open Folder as PyCharm Project怎么添加的方法
2020/12/29 Python
安装python依赖包psycopg2来调用postgresql的操作
2021/01/01 Python
AmazeUI 折叠面板的实现代码
2020/08/17 HTML / CSS
为您的家、后院、车库等在线购物:Spreetail
2019/06/17 全球购物
android面试问题与答案
2016/12/27 面试题
会计电算一体化个人简历的自我评价
2013/10/15 职场文书
人力资源部副职的竞聘演讲稿
2014/01/07 职场文书
电子商务个人职业生涯规划范文
2014/02/12 职场文书
投资申请报告
2015/05/19 职场文书
新生开学寄语大全
2015/05/28 职场文书
python实现简单区块链结构
2021/04/25 Python
四十九个javascript小知识实用技巧
2021/11/20 Javascript
Python pyecharts案例超市4年数据可视化分析
2022/08/14 Python