Python中property属性的功能是:property属性内部进行一系列的逻辑计算,最终将计算结果返回

property属性的有两种方式:

  1. 装饰器 即:在方法上应用装饰器

   2. 类属性 即:在类中定义值为property对象的类属性

装饰器:

装饰器类有三种访问方式,并分别对应了三个被@property、@方法名.setter、@方法名.deleter修饰的方法,定义为对同一个属性:获取、修改、删除

  class Goods(object):

      def __init__(self):
  # 原价
  self.original_price = 100
  # 折扣
  self.discount = 0.8   @property
  def price(self):
  # 实际价格 = 原价 * 折扣
  new_price = self.original_price * self.discount
  return new_price   @price.setter
  def price(self, value):
  self.original_price = value   @price.deleter
  def price(self):
  del self.original_price   obj = Goods()
  obj.price # 获取商品价格
  obj.price = 200 # 修改商品原价
  del obj.price # 删除商品原价 类属性

  property方法中有个四个参数

    第一个参数是方法名,调用 对象.属性 时自动触发执行方法,对应获取功能

    第二个参数是方法名,调用 对象.属性 = XXX 时自动触发执行方法,对应修改功能

    第三个参数是方法名,调用 del 对象.属性 时自动触发执行方法,对应删除功能

    第四个参数是字符串,调用 对象.属性.__doc__ ,此参数是该属性的描述信息

    class Goods(object):

        def __init__(self):
    # 原价
    self.original_price = 100
    # 折扣
    self.discount = 0.8     def get_price(self):
    # 实际价格 = 原价 * 折扣
    new_price = self.original_price * self.discount
    return new_price     def set_price(self, value):
    self.original_price = value     def del_price(self):
    del self.original_price     PRICE = property(get_price, set_price, del_price, '价格属性描述...')     obj = Goods()
    obj.PRICE # 获取商品价格
    obj.PRICE = 200 # 修改商品原价
    del obj.PRICE # 删除商品原价
 

python 中 property 属性的讲解及应用的更多相关文章

  1. python中property属性的介绍及其应用

    Python的property属性的功能是:property属性内部进行一系列的逻辑计算,最终将计算结果返回. 使用property修饰的实例方法被调用时,可以把它当做实例属性一样 property的 ...

  2. Python中property属性的概论和使用方法

    property属性 概念: 定义一个方法但是使用装饰器property,只可以有一个self形参 可以用这样的属性动态的获取属性的值 定义方式(经典类) class Fun(): @property ...

  3. python 中property函数如何实现

    实际上,在python中property(fget,fset,fdel,doc)函数不是一个真正的函数,他其实是拥有很多特殊方法的类. 这特殊类总的很多方法完成了property函数中的所有工作,涉及 ...

  4. python中@property装饰器的使用

    目录 python中@property装饰器的使用 1.引出问题 2.初步改善 3.使用@property 4.解析@property 5.总结 python中@property装饰器的使用 1.引出 ...

  5. 【转】python之property属性

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

  6. OC中@property属性关键字的使用(assign/weak/strong/copy)

    OC中@property属性关键字的使用(assign/weak/strong/copy) 一.assign 用于 ‘基本数据类型’.‘枚举’.‘结构体’ 等非OC对象类型 eg:int.bool等 ...

  7. Python中的属性访问与描述符

    Python中的属性访问与描述符 请给作者点赞--> 原文链接 在Python中,对于一个对象的属性访问,我们一般采用的是点(.)属性运算符进行操作.例如,有一个类实例对象foo,它有一个nam ...

  8. Python中的属性管理

    Python管 理属性的方法一般有三种:操作符重载(即,__getattr__.__setattr__.__delattr__和 __getattribute__,有点类似于C++中的重载操作符).p ...

  9. python之property属性

    Property的概念:property是一种特殊的属性,访问它时会执行一段功能(函数),然后返回值. import math class Circle: def __init__(self,radi ...

随机推荐

  1. FWT快速沃尔什变换

    前言 学多项式怎么能错过\(FWT\)呢,然而这真是个毒瘤的东西,蒟蒻就只会背公式了\(\%>\_<\%\) 或卷积 \[\begin{aligned}\\ tf(A) = (tf(A_0 ...

  2. TCP/UDP 端口

    端口说明 小于1024的端口通常运行一些网络服务 大于1024的端口用来与远程机器建立连接 TCP端口 = 回显 = 丢弃 = 在线用户 = 时间服务 = 网络状态 = 每日引用 = 消息发送 = 字 ...

  3. 从toString()方法到Object.prototype.toString.call()方法

    一.toString方法和Object.prototype.toSting.call()的区别 var arr=[1,2]; 直接对一个数组调用toString()方法, console.log(ar ...

  4. Session管理之超时设置和强制下线

    关于Session,在Java Web开发中,为我们提供了很多方便,Session是由浏览器和服务器之间维护的.好吧,闲话不多说,下面让我们一步一步来实现它们. (一)首先来说下Session超时时间 ...

  5. nginx和php之间是怎样通信的呢?

    FastCGI原理 FastCGI是一个运用于Http Server和动态脚本语言间通信的接口,多数流行的Http Server都支持FastCGI,包括Apache.Nginx和lighttpd等. ...

  6. Python解析JSON数据的基本方法

    转自:http://www.jb51.net/article/73450.htm JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScri ...

  7. Swift进阶之路(一)——单例模式、属性传值、代理传值、闭包传值

    一.单例模式 单例模式是设计模式中最简单的一种,甚至有些模式大师都不称其为模式,称其为一种实现技巧,因为设计模式讲究对象之间的关系的抽象,而单例模式只有自己一个对象. 关于单例,有三个重要的准则需要牢 ...

  8. ArrayBlockingQueue,LinkedBlockingQueue分析

    BlockingQueue接口定义了一种阻塞的FIFO queue,每一个BlockingQueue都有一个容量,让容量满时往BlockingQueue中添加数据时会造成阻塞,当容量为空时取元素操作会 ...

  9. maven中pom.xml解释

    知识点:解释maven中,各个标签的含义 转载:http://blog.sina.com.cn/s/blog_534f69a001010lpv.html (1)Introduce maven项目的核心 ...

  10. 无法启动此程序,因为计算机丢失MSVCP120.dll

    这种错误是由于未安装** vcredist **引起的(而且版本是 2013版):https://www.microsoft.com/zh-CN/download/details.aspx?id=40 ...