property问题:

提示:这里简述项目相关背景:

@property装饰的成员函数,只能有一个参数self;不能和别的类属性同名;并且在调用时不需要加()。

适用情况:

@property装饰适合下面这些场景:
1.只读不可修改的属性。只需要实现@property
2.输入对setter进行判断。
3.需要实时地计算属性值。
针对第三种情况,例子如下:

class OHM():def __init__(self):self._U=1self._R=1@propertydef I(self):return self._U/self._R@propertydef R(self):return self._R@R.setterdef R(self,r):if r<=0:raise ValueError('r must >0')self._R=rohm=OHM()
ohm.R=1print(ohm.I)

总结:

在对a.value赋值时,实际上调用的是被@value.setter装饰的函数,我们可以在该函数进行判断数据类型、数据范围等。至此@property装饰适合下面这些场景:
1.只读不可修改的属性。只需要实现@property
2.输入对setter进行判断。
3.需要实时地计算属性值。

作者:深度学习可好玩了
链接:https://www.zhihu.com/question/264768240/answer/2137280984
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


python@property相关推荐

  1. python property内建函数的介绍

    为什么80%的码农都做不了架构师?>>>    函数property的基本功能就是把类中的方法当作属性来访问,下面以一个有意思的例子介绍一下: 假如有一只猫,它忘了它喜欢吃什么,下面 ...

  2. python @property

    在绑定属性时,如果我们直接把属性暴露出去,虽然写起来很简单,但是,没办法检查参数,导致可以把成绩随便改: s = Student() s.score = 9999 这显然不合逻辑.为了限制score的 ...

  3. python property理解

    一般情况下我这样使用property: @property def foo(self):return self._foo# 下面的两个decrator由@property创建 @foo.setter ...

  4. python property作用_python中@property的作用和getter setter的解释

    @property作用: python的@property是python的一种装饰器,是用来修饰方法的. 我们可以使用@property装饰器来创建只读属性,@property装饰器会将方法转换为相同 ...

  5. python property函数_Python内置函数property()如何使用

    代码 class Shuxing(): def __init__(self, size = 10): self.size = size def getSize(self): print('getSiz ...

  6. Python·@property属性

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

  7. Python property函数:定义属性

    如果为 Python 类定义了 getter.setter 等访问器方法,则可使用 property() 函数将它们定义成属性(相当于实例变量). property() 函数的语法格式如下: prop ...

  8. Python @property 详解

    Python 有一个概念叫做 property,它能让你在 Python 的面向对象编程中轻松不少.在了解它之前,我们先看一下为什么 property 会被提出. 一个简单的例子 比如说你要创建一个温 ...

  9. Python @property 用法

    本文整理自<Effective Python 编写高质量 Python 代码的 59 个有效方法>第 29 条:用纯属性取代 get 和 set 方法. Python 类 public 属 ...

  10. python @property

    @property 可以将python定义的函数"当做"属性访问,从而提供更加友好访问方式,但是有时候setter/getter也是需要的,我们视具体情况吧 请注意以下代码场景: ...

最新文章

  1. mybatis批量更新的两种实现方式
  2. Linux之grep命令
  3. [OS复习]进程互斥与同步1
  4. js实现php中sleep()延时的功能
  5. oracle实列关闭,Oracle单实例+ASM启动与关闭
  6. php 定义一个json对象,PHP中使用json数据格式定义字面量对象的方法
  7. Windows Phone 7 MVVM模式的学习笔记
  8. 曲线拐点快速寻找算法+C代码
  9. Xshell7 和 Xftp7 免费下载安装
  10. android解析json数据格式,Android编程解析Json格式数据的方法
  11. BitComet的简介与下载
  12. android x86睡死,【已解决】xps15 睡眠睡死
  13. [配置] 修改路由器的名称
  14. 查询最近12个月的数据SQL语句
  15. 淘宝搜索展现原理,店铺商品排名较低怎么办
  16. java 获取时间的方法
  17. sprint 1 的总结
  18. msra数据集_干货下载 | 中文自然语言处理 语料/数据集
  19. 怒写400篇AI文章!这群妹子卷疯了…
  20. 如何查找SAP notes

热门文章

  1. 对新手超友好的板绘工具推荐:数位板 or 数位屏 or Ipad
  2. qtp连接mysql数据库_QTP连接MYSQL数据库方法
  3. 正则表达式验证邮箱地址abc132@163.com
  4. 谁还记得这些国产机?两年前还热火朝天
  5. 一个简单的方法,教你同时查顺丰多个单号的物流信息
  6. 从0到1完成一个Vue后台管理项目(九、引入Breadcrumb面包屑,更改bug)
  7. 【老生谈算法】matlab实现画交通流密速关系源码——交通流密速
  8. 基于net.tcp的WCF配置实例解析
  9. 浅谈surface go与ipad 2018
  10. 百度Apollo星火自动驾驶—慢速车绕行