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实现通过哈希算法检测图片重复的教程
Apr 02 Python
Python实现简单的文件传输与MySQL备份的脚本分享
Jan 03 Python
python动态加载包的方法小结
Apr 18 Python
python opencv实现图像边缘检测
Apr 29 Python
python频繁写入文件时提速的方法
Jun 26 Python
在python中利用numpy求解多项式以及多项式拟合的方法
Jul 03 Python
详解Django定时任务模块设计与实践
Jul 24 Python
django之静态文件 django 2.0 在网页中显示图片的例子
Jul 28 Python
python 动态迁移solr数据过程解析
Sep 04 Python
Tensorflow 使用pb文件保存(恢复)模型计算图和参数实例详解
Feb 11 Python
python数据分析:关键字提取方式
Feb 24 Python
利用OpenCV中对图像数据进行64F和8U转换的方式
Jun 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
一些使用频率比较高的php函数
2008/10/03 PHP
php实现监控varnish缓存服务器的状态
2014/12/30 PHP
10个超级有用值得收藏的PHP代码片段
2015/01/22 PHP
php常用数组函数实例小结
2016/12/29 PHP
laravel5 Eloquent 实现事务方式
2019/10/21 PHP
PHP的imageTtfText()函数深入详解
2021/03/03 PHP
使用jQuery轻松实现Ajax的实例代码
2010/08/16 Javascript
javascript使用中为什么10..toString()正常而10.toString()出错呢
2013/01/11 Javascript
JS实现商品倒计时实现代码
2013/05/03 Javascript
ajax请求get与post的区别总结
2013/11/04 Javascript
jquery 实现两级导航菜单附效果图
2014/03/07 Javascript
jquery+json实现数据二级联动的方法
2015/11/28 Javascript
jquery插件Jplayer使用方法简析
2016/04/22 Javascript
jQuery 操作input中radio的技巧
2016/07/18 Javascript
纯JS焦点图特效实例(可一个页面多用)
2016/12/07 Javascript
JS字符串去除连续或全部重复字符的实例
2018/03/08 Javascript
vue 监听屏幕高度的实例
2018/09/05 Javascript
基于webpack4+vue-cli3项目实现换肤功能
2019/07/17 Javascript
详解webpack引用jquery(第三方模块)的三种办法
2019/08/21 jQuery
vue-cli在 history模式下的配置详解
2019/11/26 Javascript
[02:08]我的刀塔不可能这么可爱 胡晓桃_1
2014/06/20 DOTA
一个基于flask的web应用诞生 记录用户账户登录状态(6)
2017/04/11 Python
python 对txt中每行内容进行批量替换的方法
2018/07/11 Python
对python 多线程中的守护线程与join的用法详解
2019/02/18 Python
Python3的socket使用方法详解
2020/02/18 Python
在pytorch中实现只让指定变量向后传播梯度
2020/02/29 Python
Python爬虫Scrapy框架CrawlSpider原理及使用案例
2020/11/20 Python
HTML5中input输入框默认提示文字向左向右移动的示例代码
2020/09/10 HTML / CSS
保安员岗位职责
2013/11/17 职场文书
招聘单位介绍信
2014/01/14 职场文书
中学生运动会入场词
2014/02/12 职场文书
大学生在校表现评语
2014/12/31 职场文书
罚站检讨书
2015/01/29 职场文书
小学班级口号大全
2015/12/25 职场文书
python实现的web监控系统
2021/04/27 Python
MySQL数据库之存储过程 procedure
2022/06/16 MySQL