在调用setattr时,当试图设置某个带有setter的属性的值时,这将导致无限递归循环:class TypeSystem(object):

def __setattr__(self, key, value):

if the_special_case is True:

# do something

else:

super(TypeSystem,self).__setattr__(key,value)

class Entity(TypeSystem):

@property

def some_prop(self):

some_prop = self.data.get('some_prop')

if some_prop is None and hasattr(self,"some_prop"):

some_prop = self.some_prop

return some_prop

@some_prop.setter

def some_prop(self,value):

self.some_prop = value

>>> entity = Entity()

>>> entity.some_prop = 3

定义为普通属性的递归属性是不起作用的。在

但是由于某些_prop不是预先定义的,所以它看起来像是在调用setattr,而不是调用了某个\u prop的setter,因此它被拉入一个循环。在

我也试过。。。。在

^{pr2}$

但它仍然进入递归循环。我不知道该怎么避免。在

python setattr无限递归_如何避免使用setattr和属性setter来避免递归循环?相关推荐

  1. 二叉树层序遍历递归与非递归_二叉树基础(1)-构建和遍历(递归和非递归)...

    二叉树的构建有2种方式:1.直接输入数字.2.根据两种顺序来判断另外一中顺序(后面会提到) 这里分享第一种构建方式,二叉树的前中后三种遍历方式(递归和非递归版本),和二叉树的层次遍历. 见代码demo ...

  2. java 什么时候用递归_如果要用Java实现算法,一定慎用递归

    现象 : 递归是我们很经典的一种算法实现,可以很好的描述一个算法的原理!对于算法的描述.表现和代码结构理解上,递归都是不错的选择! 但是本文想说的是java实现一个递归算法的时候尽量不要用递归实现,而 ...

  3. 可能存在无限递归_你为什么学不会递归?读完这篇文章轻松理解递归算法

    对于很多编程初学者来说,递归算法是学习语言的最大障碍之一.很多人也是半懂不懂,结果学到很深的境地也会因为自己基础不好,导致发展太慢. 可能也有一大部分人知道递归,也能看的懂递归,但在实际做题过程中,却 ...

  4. 可能存在无限递归_无限分类递归+排序解剖

    首先我们先了解一下递归函数: 递归函数在语言学习的时候会单独拿出来学习,因为它非常常用,本质上来讲递归函数就是调用自己的函数. 举个例子: test函数里面又再调用了自身,这就是俗称的递归函数!递归函 ...

  5. 关于python无限循环、以下选项错误的是_关于Python的无限循环,以下选项中描述错误的是...

    [单选题]以下选项中,符合Python语言变量命名规则的是 [单选题]关于 Python 的复数类型,以下选项中描述错误的是 [单选题]关于Python字符串,以下选项中描述错误的是 [单选题]关于P ...

  6. 闭包、装饰器与递归_月隐学python第12课

    目录 1. 闭包 2 装饰器(重点,难点) 2.1 装饰器写法 2.2使⽤@语法糖将装饰器应⽤到指定函数上,简化使⽤ 2.3 带有不定⻓参数的装饰器 2.4 多个装饰器作⽤在⼀个函数上(不重要) 3. ...

  7. python类高级用法_十.python面向对象高级用法

    1.反射 1.1 什么是反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省).这一概念的提出很快引发了计算机科学领域关于应用反射性的 ...

  8. python找零钱问题_动态规划法(二)找零钱问题

    本次博客尝试以storyline的方式来写作,如有不足之处,还请多多包涵~~ 问题的诞生 我们故事的主人公叫做丁丁,他是一个十几岁的小男孩,机智聪颖,是某某杂货店的小学徒.在他生活的国度里,只流通面额 ...

  9. python中递归函数写法_详解python中递归函数

    函数执行流程 def foo1(b,b1=3): print("foo1 called",b,b1) def foo2(c): foo3(c) print("foo2 c ...

最新文章

  1. 看问题要看到本质:从Web服务器说起
  2. PSAM卡---中国人民银行PSAM卡管理规范.doc
  3. DevExress笔记
  4. Tensorflow实战系列之五:
  5. java ee jms_Java EE6事件:JMS的轻量级替代品
  6. 一切转型始于数据和模型 | 2020 MATLAB EXPO 中国线上用户大会:即将上线
  7. 定时器Timer的实现
  8. 社会工程学***的八种常用方法
  9. js 正则是否包含某些字符串_js 判断字符串中是否包含某个字符串(转载)
  10. ZOJ 3962 Seven Segment Display(数位DP)题解
  11. python 多核并行计算_手把手 | 嫌Python太慢?并行运算Process Pools三行代码给你4倍提速!...
  12. 主动申请linux内存 脚本,Shell 脚本来自动监控 Linux 系统的内存
  13. Windows 系统 重装为Linux 记录
  14. 北京集训②DAY1 Morning
  15. unity常用的引用赋值一个GameObject的三种方法
  16. 受益匪浅!Spring事务是如何传播的附架构师必备技术详解
  17. 字节跳动 python面试_字节跳动数据分析实习岗面试全经历,竟然也会问这样的问题?...
  18. Android自定义view之围棋动画,真牛皮
  19. 1--STM32 ADC1与ADC2 16通道DMA采集笔记
  20. dataguard 日志的应用

热门文章

  1. junit4新框架hamcrest的assertThat
  2. centos安装oracle步骤
  3. 把字符串转换成int整数
  4. CONVERT() 函数
  5. 十问十答带你快速了解ASPICE
  6. [MFC]对CString::GetBufferSetLength方法的探究,需要ReleaseBuffer,GetLength才正确!
  7. html自动识别pc手机跳转,网站根据访问客户端设备UA(PC和手机移动)自动判断跳转代码...
  8. C语言分阶段求利润问题
  9. 在Linux搭建Kafka集群
  10. C语言——恐怖水母(贪心算法)