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的绘图工具matplotlib使用实例
Jul 03 Python
Python中list列表的一些进阶使用方法介绍
Aug 15 Python
Python 的描述符 descriptor详解
Feb 27 Python
python实现按长宽比缩放图片
Jun 07 Python
python实现石头剪刀布程序
Jan 20 Python
python操作小程序云数据库实现简单的增删改查功能
Jun 06 Python
python3中类的继承以及self和super的区别详解
Jun 26 Python
Django REST框架创建一个简单的Api实例讲解
Nov 05 Python
python3中numpy函数tile的用法详解
Dec 04 Python
python正则表达式匹配IP代码实例
Dec 28 Python
pycharm无法安装第三方库的问题及解决方法以scrapy为例(图解)
May 09 Python
详解pytorch中squeeze()和unsqueeze()函数介绍
Sep 03 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
四月新番又没了,《Re:从零开始的异世界生活》第二季延期至7月播出
2020/05/06 日漫
JS维吉尼亚密码算法实现代码
2010/11/09 Javascript
Javascript 垃圾收集机制介绍理解
2013/05/14 Javascript
jQuery操作Select的Option上下移动及移除添加等等
2013/11/18 Javascript
javascript实现的一个带下拉框功能的文本框
2014/05/08 Javascript
微信公众号 摇一摇周边功能开发
2016/12/08 Javascript
JavaScript Base64 作为文件上传的实例代码解析
2017/02/14 Javascript
详解Angular 4.x Injector
2017/05/04 Javascript
jQuery实现的文字逐行向上间歇滚动效果示例
2017/09/06 jQuery
实例讲解JavaScript截取字符串
2018/11/30 Javascript
JS+CSS3实现的简易钟表效果示例
2019/04/13 Javascript
three.js利用gpu选取物体并计算交点位置的方法示例
2019/11/25 Javascript
JavaScript中的类型检查
2020/02/03 Javascript
Python排序搜索基本算法之希尔排序实例分析
2017/12/09 Python
Python Pandas分组聚合的实现方法
2019/07/02 Python
python飞机大战 pygame游戏创建快速入门详解
2019/12/17 Python
Python爬虫工具requests-html使用解析
2020/04/29 Python
python矩阵运算,转置,逆运算,共轭矩阵实例
2020/05/11 Python
学python最电脑配置有要求么
2020/07/05 Python
python 批量下载bilibili视频的gui程序
2020/11/20 Python
python SOCKET编程基础入门
2021/02/27 Python
html5中localStorage本地存储的简单使用
2017/06/16 HTML / CSS
HMV日本官网:全球知名的音乐、DVD和电脑游戏零售巨头
2016/08/13 全球购物
巴西宠物店在线:Geração Pet
2017/05/31 全球购物
mysql的最长数据库名,表名,字段名可以是多长
2014/04/21 面试题
青年教师典范事迹材料
2014/01/31 职场文书
《池塘边的叫声》教学反思
2014/04/12 职场文书
写求职信要注意什么问题
2014/04/12 职场文书
节能环保标语
2014/06/12 职场文书
家长会欢迎标语
2014/06/24 职场文书
城管年度个人总结
2015/02/28 职场文书
大学生自我评价范文
2015/03/03 职场文书
事业单位工作人员2015年度思想工作总结
2015/10/15 职场文书
写自招自荐信的绝招!
2019/04/19 职场文书
使用pandas模块实现数据的标准化操作
2021/05/14 Python
pytorch 权重weight 与 梯度grad 可视化操作
2021/06/05 Python