property属性

1.property属性:
  是一个提高开发者用户体验度的属性,可以将一个函数改造的像属性一样。
例:

# 定义的时候像是一个函数 使用的时候和属性的方式是以样的
class Foo(object):@propertydef money(self):return 100# f = Foo()
# m = f.money()
# print(m)
f = Foo()
print(f.money)

执行结果:

2.property简单应用:
例:根据当前页数和每页显示数据条数,计算出该页起始编号和结尾编号

class Pager:def __init__(self, current_page):# 用户当前请求的页码(第一页、第二页...)self.current_page = current_page# 每页默认显示100条数据self.per_items = 100@propertydef start(self):val = (self.current_page - 1) * self.per_items + 1return val@propertydef end(self):val = self.current_page * self.per_itemsreturn valp = Pager(2)
print(p.start)
print(p.end)

执行结果:

3.装饰器方式:在方法上应用装饰器
  三种@property装饰器:

class Goods:@propertydef price(self):print('@property')@price.setterdef price(self, value):print('@price.setter')@price.deleterdef 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  # 折扣@propertydef price(self):val = self.org_price * self.discount# 返回价格*折扣return val@price.setterdef price(self, new_val):# 接收val,将价格修改为valself.org_price = new_val@price.deleterdef price(self):# 将折扣修改为1(删掉折扣)self.discount = 1g = Goods()
print(g.price)
g.price = 2000
print(g.price)
del g.price
print(g.price)

执行结果:

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 valdef set_price(self, new_val):# 接收new_val,将价格修改为new_valself.org_price = new_valdef del_price(self):# 将折扣修改为1(删掉折扣)self.discount = 1price = 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属性相关推荐

  1. python 中 property 属性的讲解及应用

    Python中property属性的功能是:property属性内部进行一系列的逻辑计算,最终将计算结果返回 property属性的有两种方式: 装饰器 即:在方法上应用装饰器 类属性 即:在类中定义 ...

  2. Python高级——魔法属性和方法

    魔法属性和方法 1.__doc__:表示类的描述信息 2.__module__和__class__:当前操作对象所属的模块和类 3.__init__:初始化方法,类创建对象时,自动触发执行 4.__d ...

  3. Python中菱形继承的MRO顺序及property属性

    Python中菱形继承的MRO顺序及property属性 文章目录 Python中菱形继承的MRO顺序及property属性 一.Python中菱形继承的MRO顺序 1. 单独调用父类的方法 2. 多 ...

  4. python 基础教程:对 property 属性的讲解及用法

    Python中property属性的功能是:property属性内部进行一系列的逻辑计算,最终将计算结果返回 property属性的有两种方式: 装饰器 即:在方法上应用装饰器 类属性 即:在类中定义 ...

  5. python中的property_python中的property属性

    1. 什么是property属性 一种用起来像是使用的实例属性一样的特殊属性,可以对应于某个方法 # ############### 定义 ############### class Foo: def ...

  6. python提高——多继承、静态方法、类方法、property属性、魔法属性

    目录 1多继承 单独调用父类得方法 多继承中super调用父类的被重写的方法 单继承中super 2静态方法.类方法 2.1类属性.实例属性 2.2实例方法.静态方法和类方法 3property属性 ...

  7. 定义一个属性_Python property属性

    1. 什么是property属性 一种用起来像是使用的实例属性一样的特殊属性,可以对应于某个方法 # ############### 定义 ###############class Foo: def ...

  8. Python使用property函数和使用@property装饰器定义属性访问方法的异同点分析

    Python使用property函数和使用@property装饰器都能定义属性的get.set及delete的访问方法,他们的相同点主要如下三点: 1.定义这些方法后,代码中对相关属性的访问实际上都会 ...

  9. Python·@property属性

    一.property属性 property属性可以用来给属性添加约束,比如温度属性,我们不允许低于-273度:成绩属性,我们不允许0分以下等等.而且使用property属性,将来修改约束条件的时候也很 ...

最新文章

  1. 装服务器得时候选择系统版本,云服务器选择系统版本
  2. it行业php,什么是IT行业
  3. window,windowManager --《android 艺术探索读书》笔记
  4. 云炬Android开发笔记 10主界面-首页UI与数据解析器开发(RecyclerView)
  5. jsp页面实现打印 .
  6. SAP Spartacus lock focus directive如何判断有没有focusable children
  7. 第八节:Task的各类TaskTResult返回值以及通用线程的异常处理方案。
  8. Linux下安装Redis(三分钟搞定)
  9. C语言判断点是否在矩阵内
  10. JavaWeb——Get、Post请求中文乱码问题
  11. 2018杭电多校第六场1009(DFS,思维)
  12. mysql 介于两个日期函数_帮忙看一上这个mysql函数,用来返回两个日期之间的年数...
  13. 简要分析上海链家9月二手房
  14. 行业标准 | 证券期货经营机构信息系统备份能力标准 JR/T 0059—2010
  15. 前端内容安全策略(csp)
  16. 2021ACA世界大赛中国赛区完美收官,创意设计收获百万级关注
  17. Basic认证方式的配置
  18. 解决视频资源音乐资源在Android模拟器中不能播放的问题
  19. AES算法中S盒的FPGA实现
  20. 【Python】个人所得税

热门文章

  1. 写了人生中第一个完整模块的用例
  2. Spring Cloud Alibaba发布第二个版本,Spring 发来贺电 1
  3. Hangfire入门(任务调度)
  4. Android SubsamplingScaleImageView(subsampling-scale-image-view)单双击长按事件【系列2】
  5. html和url两种录制方式
  6. CentOS 5.8 Zimbra邮件系统安装与配置
  7. TypeScript入门教程 之 为什么使用TypeScript
  8. 架构选型,究竟啥时候选redis?
  9. 【nginx】【小记】泛解析大量域名的情况下 将不带www的域名,301到与之对应的www前缀的域名
  10. Dockerfile 文件结构、docker镜像构建过程详细介绍