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发送邮件实例讲解(python发邮件附件可以使用email模块实现)
Dec 03 Python
python基础教程之循环介绍
Aug 29 Python
Python开发常用的一些开源Package分享
Feb 14 Python
Python备份目录及目录下的全部内容的实现方法
Jun 12 Python
python使用psutil模块获取系统状态
Aug 27 Python
PyTorch快速搭建神经网络及其保存提取方法详解
Apr 28 Python
pandas 读取各种格式文件的方法
Jun 22 Python
python opencv将图片转为灰度图的方法示例
Jul 31 Python
python 画函数曲线示例
Dec 04 Python
Python中无限循环需要什么条件
May 27 Python
keras Lambda自定义层实现数据的切片方式,Lambda传参数
Jun 11 Python
Python读取pdf表格写入excel的方法
Jan 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
example1.php
2006/10/09 PHP
PHP中设置一个严格30分钟过期Session面试题的4种答案
2014/07/30 PHP
WordPress导航菜单的滚动和淡入淡出效果的实现要点
2015/12/14 PHP
新手入门常用代码集锦
2007/01/11 Javascript
手把手教你自己写一个js表单验证框架的方法
2010/09/14 Javascript
自己编写的类似JS的trim方法
2013/10/09 Javascript
JavaScript控制table某列不显示的方法
2015/03/16 Javascript
jQuery+HTML5加入购物车代码分享
2020/10/29 Javascript
轻松掌握jQuery中wrap()与unwrap()函数的用法
2016/05/24 Javascript
JS 日期与时间戮相互转化的简单实例
2016/06/22 Javascript
详解JavaScript的内置对象
2016/12/07 Javascript
jQuery表单元素选择器代码实例
2017/02/06 Javascript
React-router中结合webpack实现按需加载实例
2017/05/25 Javascript
详解nodejs通过代理(proxy)发送http请求(request)
2017/09/22 NodeJs
微信小程序 动画的简单实例
2017/10/12 Javascript
javascript变量提升和闭包理解
2018/03/12 Javascript
Vue 使用中的小技巧
2018/04/26 Javascript
jQuery UI实现动画效果代码分享
2018/08/19 jQuery
用node撸一个监测复联4开售短信提醒的实现代码
2019/04/10 Javascript
Vuex的actions属性的具体使用
2019/04/14 Javascript
微信小程序使用自定义组件导航实现当前页面高亮
2020/01/02 Javascript
nodejs脚本centos开机启动实操方法
2020/03/04 NodeJs
Python实现小数转化为百分数的格式化输出方法示例
2017/09/20 Python
matplotlib中legend位置调整解析
2017/12/19 Python
nohup后台启动Python脚本,log不刷新的解决方法
2019/01/14 Python
python实现基于朴素贝叶斯的垃圾分类算法
2019/07/09 Python
python抓取多种类型的页面方法实例
2019/11/20 Python
Python实现七个基本算法的实例代码
2020/10/08 Python
大学生水文观测实习自我鉴定
2013/09/29 职场文书
销售工作岗位职责
2013/12/24 职场文书
学生个人自我鉴定
2014/03/26 职场文书
施工工地安全标语
2014/06/07 职场文书
飞机制造技术专业求职信
2014/07/27 职场文书
研究生毕业论文导师评语
2014/12/31 职场文书
SpringBoot读取Resource下文件的4种方法
2021/07/02 Java/Android
HTML5基础学习之文本标签控制
2022/03/25 HTML / CSS