property的作用是将一个属性的操作方法封装为一个属性,用户使用起来就和操作普通属性完全一致

property属性有两种使用方式:

装饰器 :在方法上应用装饰器

类属性:在类中定义值为property对象的类属性。

首先看装饰器的方式:

我们要首先明白python中有经典类和新式类,新式类的属性比经典类属性丰富(如果类继承object,那么该类是新式类,python3中默认所有类为新式类)。

关于property属性要知道经典类中属性只有一种访问方式,@property 。新式类中的属性有三种访问方式:@property , @方法名.setter , @方法名.deleter

由于新式类具有三种访问方式,我们可以根据他们几个属性的访问特点,分别将三个方法定义为对同一个属性:获取、修改、删除。

class Goods(object):def __init__(self):# 原价self.original_price = 100# 折扣self.discount = 0.8@propertydef price(self):# 实际价格 = 原价 * 折扣new_price = self.original_price * self.discountreturn new_price@price.setterdef price(self, value):self.original_price = value@price.deleterdef price(self):del self.original_priceobj = Goods()
obj.price         # 获取商品价格
obj.price = 200   # 修改商品原价
del obj.price     # 删除商品原价

接下来看类属性方式,创建值为property对象的类属性。

当使用类属性的方式创建property属性时,经典类和新式类无区别。当调用操作属性的方法时,直接使用该类属性名。

 property方法中有个四个参数 (参数顺序不能改变,无此函数时参数为None)

  • 第一个参数是方法名,调用 对象.属性 时自动触发执行方法
  • 第二个参数是方法名,调用 对象.属性 = XXX 时自动触发执行方法
  • 第三个参数是方法名,调用 del 对象.属性 时自动触发执行方法
  • 第四个参数是字符串,调用 类名.属性.__doc__ ,此参数是该属性的描述信息
class Goods(object):"""这是一个商品价格类"""def __init__(self):self.original_price = 100self.discount = 0.8def get_price(self):my_price = self.original_price * self.discountreturn my_price# 必须两个参数def set_price(self, value):self.original_price = valuedef del_price(self):del self.original_priceprice = property(get_price, set_price, del_price, "调整商品价格")# 少参数时的处理方法#price = property(get_price, None, del_price, "调整商品价格")goods = Goods()
print(goods.price)  # 获取价格
goods.price = 200  # 修改价格
print(goods.price)
print(Goods.price.__doc__)  # 获取price 类属性描述信息  调整商品价格
print(Goods.__doc__)  # 获取类的描述信息
print(goods.__doc__)  # 获取Goods对象的描述信息
del goods.price  # 删除价格
# print(goods.price)

80.0
160.0
调整商品价格
这是一个商品价格类
这是一个商品价格类

property属性的使用相关推荐

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

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

  2. 类 property属性

    类的定义 类的创建: 类是通过属性来保存数据的. 成员变量的修饰: Private:私有 外部不可访问 不可继承 Protected:被保护 外部不可访问 可继承 Public:公共 可被外部访问 可 ...

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

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

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

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

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

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

  6. python中的property_python中的property属性

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

  7. Python高级——property属性

    property属性 1.property属性: 是一个提高开发者用户体验度的属性,可以将一个函数改造的像属性一样. 例: # 定义的时候像是一个函数 使用的时候和属性的方式是以样的 class Fo ...

  8. php property 获取,JavaScript中如何获取和设置property属性代码详解

    JavaScript中对象的property有三个属性: 1.writable.该property是否可写. 2.enumerable.当使用for/in语句时,该property是否会被枚举. 3. ...

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

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

  10. 论 静态方法@staticmethod 类方法@classmethod @property属性

    1. 类属性.实例属性 class Province(object):# 类属性country = '中国'def __init__(self, name):# 实例属性self.name = nam ...

最新文章

  1. 派生类参数初始化列表和基类构造函数顺序
  2. 计算机组装安全常识,计算机组装与维护宝典
  3. CSS如何正确显示人民币符号¥
  4. 4923: [Lydsy1706月赛]K小值查询 平衡树 非旋转Treap
  5. phpcms v9二次开发之模型类的应用(1)
  6. jsp+urlrewrite实现html分页简单粗暴实现
  7. android webview 获取图片,Android – 保存WebView中的图片
  8. 猫大叫,鼠速逃,人醒了
  9. 浅析python中的main函数_浅的意思
  10. Python 进阶:全面解读高级特性之切片!
  11. VMware vsphere Hypervisor、VMware vsphere和VMware Workstation小记
  12. XHTML 和 DOCTYPE 切换(MSDN)
  13. 手机html5测试苹果八,怎么简单质检你的iPhone手机以及真假判断!
  14. 【龙芯1c库】封装硬件SPI接口和使用示例
  15. Laravel第二章
  16. 个股和股票池的beta系数的估算
  17. Subscript ‘subscript(_:)‘ requires that ‘String.Index‘ conform to ‘RangeExpression‘
  18. android exoplayer 直播流,使用Exo-Media Player播放RTMP直播
  19. 顺顺网页电子表格控件开源下载
  20. jquery限制只能输入英文逗号和数字

热门文章

  1. 阿里云最新最全扩容方法
  2. CF1720A Burenka Plays with Fractions 题解
  3. rabbitmq reply-code=404, reply-text=NOT_FOUND
  4. 哈工大计算机网络-作业讲解
  5. 【Lingo】分段函数
  6. python excel word模板_Python将Excel数据插入Word模板生成详细内容文档
  7. 云计算技术体系结构由这四点组成
  8. OpenStack八大核心组件精讲之---swift
  9. 联网技术架构讨论:Facebook 如何管理150亿张照片
  10. 使用Python发送邮件(QQ邮箱为例)