我想定义一个包含读写方法的类,可以调用如下:

instance.read

instance.write

instance.device.read

instance.device.write

为了不使用隔行类,我的想法是覆盖__getattr__和__setattr__方法,并检查,如果给定的名称是设备重定向返回自身。但是我遇到了无穷递归的问题。示例代码如下:

class MyTest(object):

def __init__(self, x):

self.x = x

def __setattr__(self, name, value):

if name=="device":

print "device test"

else:

setattr(self, name, value)

test = MyTest(1)

在__init__中,代码试图创建一个新的属性x,它调用__setattr__,它再次调用__setattr__等等。如何改变这个代码,在这种情况下,创建一个新的属性x,保存值1?

或者有什么更好的方法来处理像instance.device.read这样的调用来映射到instance.read?

由于总是有关于为什么的问题:我需要创建xmlrpc调用的抽象,因此可以创建诸如myxmlrpc.instance,device.read和类似的简单方法。我需要“模拟”,以模拟这种多点方法调用。

python setattr无限递归_python – 如何正确使用__setattr__,避免无限递归相关推荐

  1. python setattr 代码可读性_python __setattr__、__getattr__、__getattribute__全面详解

    一.属性引用函数 hasattr(obj,name[,default]) getattr(obj,name) setattr(obj,name,value) delattr(obj,name) 二.属 ...

  2. 在python中print 应用_Python print正确使用方法浅析

    Python编程语言是一款比较新颖的编程语言,相对于其他语言来说,有很多不同的特点引起了大多数开发人员的兴趣.在这里我们可以先从Python print的相关应用方法来分析,初步了解这一语言的应用方式 ...

  3. python怎么输出复数_python基础知识及应用(二)输入输出|递归|深浅拷贝|全局变量|复数...

    目录 一.python输入输出 二.迭代 2.1 输入与输出 2.2 解法 三.拷贝 3.1 拷贝实例 3.2 对象的赋值 3.3 浅拷贝 3.4 深拷贝 3.5 拷贝例如 四.set 4.1 题 4 ...

  4. 递归函数python有什么特点_Python中的递归

    在前面的讲解中,函数的调用通常发生在彼此不同的函数之间.其实,函数还有一种特殊的调用方式,那就是自己调用自己,这种方式称为函数递归调用. 递归,在程序设计中也是一个常用的技巧,甚至是一种思维方式,非常 ...

  5. python冒泡排序算法非递归_python 冒泡排序,递归

    今天LeetCode的时候暴力求解233 问题: 给定一个整数 n,计算所有小于等于 n 的非负数中数字1出现的个数. 例如: 给定 n = 13, 返回 6,因为数字1出现在下数中出现:1,10,1 ...

  6. python二分法递归_python 【递归 及 二分法】

    python [递归函数 及 二分法] 一.递归的定义 在一个函数里再调用这个函数本身,这种魔性的使用函数的方式就叫做递归. 递归的最大深度--997 #修改递归层数 import sys sys.s ...

  7. 彻底理解python递归_Python开发之-Python递归图示理解

    1.函数递归是函数式编程的重要组成部分,所以对函数递归的深层次理解十分重要.本人用图示的方法解释函数的层级递归方式,先理解下面的函数 deftest(n):if n == 1:return 1 els ...

  8. python 获取脚本当前路径_Python获取脚本所在目录的正确方法

    http://www.jb51.net/article/49035.htm 文章主要介绍了Python获取脚本所在目录的正确方法 1.以前的方法如果是要获得程序运行的当前目录所在位置,那么可以使用os ...

  9. python 文件路径找不到_python路径正确但找不到文件

    python 为什么明明有这个文件路径,但有时候会找不到 整理路径,请用 os.path.normpath() 进行整理,然后你再试试,不要用 join a = os.path.normpath(&q ...

最新文章

  1. OpenCV 【十四】改变图像的对比度和亮度高度关联章节:OpenCV 【十】——Gamma校正 ——图像灰度变化
  2. 考PMP证书一定要参加PMP培训吗?
  3. 漫谈Google Percolator分布式事务
  4. css设置并排,CSS并排排列2个div
  5. 互联网1分钟 | 0321 小米上线“朕惊视频”;依图医疗与华为联合发布智能医疗云...
  6. volatile 和 sig_atomic_t
  7. html怎么修改锚点的属性,在HTML中设置自定义锚点
  8. 纽大博士宿舍内自缢身亡,本月即将毕业
  9. python动态表情包下载_Python从eif中导出qq表情的gif图片
  10. bootstrap中container类和container-fluid类的区别
  11. Pseudo code:伪代码
  12. 硅谷新一代媒体巨头Mode Media突然宣布关闭
  13. 考满分软件测试工程师(实习)面试软达启航面试
  14. Solr -- 实时搜索
  15. 【数据挖掘】电商数据合集
  16. 苹果手机如何用计算机,电脑怎么控制iPhone手机
  17. 【区块链】以太坊Solidity编程:智能合约实现之基本语法
  18. 门店怎么申请共享充电宝
  19. ab压力测试结果-简要说明
  20. 代码角度理解SGX的认证机制(一):本地认证

热门文章

  1. js 设置video宽度_video设置视频的宽高
  2. 【教程】会声会影“分享”输出的AVI也可以既清晰又体积小
  3. 你连对外接口签名都不会知道?有时间还是要学习学习。
  4. 复试c语言笔试题,2014年暨南大学C语言考研复试试题(回忆版)
  5. 7-119 奇偶分家
  6. linux for循环套for循环格式_为什么for循环和aes八字不合
  7. STM32G0开发笔记-Platformio+libopencm3-SPI接口使用
  8. Python中用print函数输出
  9. 斗地主——扎金花——3DMark
  10. iOS 内购IAP(In-App Purchases)代码实现(上)