如何正确使用__setattr__,避免无限递归

2023-12-04

我想定义一个包含以下内容的类read and write方法,可以按如下方式调用:

instance.read
instance.write
instance.device.read
instance.device.write

为了不使用交错类,我的想法是覆盖__getattr__ and __setattr__方法并检查给定的名称是否是device将返回重定向到self。但我遇到了无限递归的问题。示例代码如下:

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)

As in __init__该代码尝试创建一个新属性x,它调用__setattr__,这再次调用__setattr__等等。我需要如何更改此代码,在本例中是一个新属性x of self被创建,保持价值1?

或者有没有更好的方法来处理像instance.device.read被“映射”到instance.read?

因为总是有人问为什么:我需要创建以下抽象:xmlrpc调用,非常简单的方法,例如myxmlrpc.instance,device.read并可以创建类似的。我需要“模拟”它来模仿这种多点方法调用。


必须调用父类__setattr__ method:

class MyTest(object):

    def __init__(self, x):
        self.x = x

    def __setattr__(self, name, value):
        if name=="device":
            print "device test"
        else:
            super(MyTest, self).__setattr__(name, value)
            # in python3+ you can omit the arguments to super:
            #super().__setattr__(name, value)

关于最佳实践,因为您计划通过以下方式使用它xml-rpc我认为这可能在内部完成会更好_dispatch method.

一种快速而肮脏的方法就是简单地执行以下操作:

class My(object):
    def __init__(self):
        self.device = self
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何正确使用__setattr__,避免无限递归 的相关文章

  • 元组有什么用?

    我现在正在学习 Python 课程 我们刚刚介绍了元组作为数据类型之一 我阅读了它的维基百科页面 但是 我无法弄清楚这种数据类型在实践中会有什么用处 我可以提供一些需要一组不可变数字的示例吗 也许是在 Python 中 这与列表有何不同 每
  • 处理 Python 行为测试框架中的异常

    我一直在考虑从鼻子转向行为测试 摩卡 柴等已经宠坏了我 到目前为止一切都很好 但除了以下之外 我似乎无法找出任何测试异常的方法 then It throws a KeyError exception def step impl contex
  • 使用 Python 从文本中删除非英语单词

    我正在 python 上进行数据清理练习 我正在清理的文本包含我想删除的意大利语单词 我一直在网上搜索是否可以使用像 nltk 这样的工具包在 Python 上执行此操作 例如给出一些文本 Io andiamo to the beach w
  • 我可以在我的机器上同时安装 python 2.7 和 3.5 的tensorflow吗?

    目前我通过 Anaconda 在我的机器 MAC OX 上安装了 Python 2 7 Python 3 5 Tensorflow for Python 3 5 我也想在我的机器上安装 Tensorflow for Python 2 7 当
  • 您可以格式化 pandas 整数以进行显示,例如浮点数的“pd.options.display.float_format”?

    我见过this https stackoverflow com questions 18404946 py pandas formatdataframe and this https stackoverflow com questions
  • 在Python中连接反斜杠

    我是 python 新手 所以如果这听起来很简单 请原谅我 我想加入一些变量来生成一条路径 像这样 AAAABBBBCCCC 2 2014 04 2014 04 01 csv Id TypeOfMachine year month year
  • 为什么 PyYAML 花费这么多时间来解析 YAML 文件?

    我正在解析一个大约 6500 行的 YAML 文件 格式如下 foo1 bar1 blah name john age 123 metadata whatever1 whatever whatever2 whatever stuff thi
  • Python beautifulsoup 仅限 1 级文本

    我看过其他 beautifulsoup 得到相同级别类型的问题 看来我的有点不同 这是网站 我正试图拿到右边那张桌子 请注意表的第一行如何展开为该数据的详细细分 我不想要那个数据 我只想要最顶层的数据 您还可以看到其他行也可以展开 但在本例
  • 在 Sphinx 文档中*仅*显示文档字符串?

    Sphinx有一个功能叫做automethod从方法的文档字符串中提取文档并将其嵌入到文档中 但它不仅嵌入了文档字符串 还嵌入了方法签名 名称 参数 我如何嵌入only文档字符串 不包括方法签名 ref http www sphinx do
  • pip 列出活动 virtualenv 中的全局包

    将 pip 从 1 4 x 升级到 1 5 后pip freeze输出我的全局安装 系统 软件包的列表 而不是我的 virtualenv 中安装的软件包的列表 我尝试再次降级到 1 4 但这并不能解决我的问题 这有点类似于这个问题 http
  • 使用特定颜色和抖动在箱形图上绘制数据点

    我有一个plotly graph objects Box图 我显示了箱形 图中的所有点 我需要根据数据的属性为标记着色 如下所示 我还想抖动这些点 下面未显示 Using Box我可以绘制点并抖动它们 但我不认为我可以给它们着色 fig a
  • 如何使用原始 SQL 查询实现搜索功能

    我正在创建一个由 CS50 的网络系列指导的应用程序 这要求我仅使用原始 SQL 查询而不是 ORM 我正在尝试创建一个搜索功能 用户可以在其中查找存储在数据库中的书籍列表 我希望他们能够查询 书籍 表中的 ISBN 标题 作者列 目前 它
  • Pandas 将多行列数据帧转换为单行多列数据帧

    我的数据框如下 code df Car measurements Before After amb temp 30 268212 26 627491 engine temp 41 812730 39 254255 engine eff 15
  • 根据列 value_counts 过滤数据框(pandas)

    我是第一次尝试熊猫 我有一个包含两列的数据框 user id and string 每个 user id 可能有多个字符串 因此会多次出现在数据帧中 我想从中导出另一个数据框 一个只有那些user ids列出至少有 2 个或更多string
  • 在本地网络上运行 Bokeh 服务器

    我有一个简单的 Bokeh 应用程序 名为app py如下 contents of app py from bokeh client import push session from bokeh embed import server do
  • 将 Python 中的日期与日期时间进行比较

    所以我有一个日期列表 datetime date 2013 7 9 datetime date 2013 7 12 datetime date 2013 7 15 datetime date 2013 7 18 datetime date
  • Scipy Sparse:SciPy/NumPy 更新后出现奇异矩阵警告

    我的问题是由大型电阻器系统的节点分析产生的 我基本上是在设置一个大的稀疏矩阵A 我的解向量b 我正在尝试求解线性方程A x b 为了做到这一点 我正在使用scipy sparse linalg spsolve method 直到最近 一切都
  • Django-tables2 列总计

    我正在尝试使用此总结列中的所有值文档 https github com bradleyayers django tables2 blob master docs pages column headers and footers rst 但页
  • 更改 Tk 标签小部件中单个单词的颜色

    我想更改 Tkinter 标签小部件中单个单词的字体颜色 我知道可以使用文本小部件来实现与我想要完成的类似的事情 例如使单词 YELLOW 显示为黄色 self text tag config tag yel fg clr yellow s
  • 使用随机放置的 NaN 创建示例 numpy 数组

    出于测试目的 我想创建一个M by Nnumpy 数组与c随机放置的 NaN import numpy as np M 10 N 5 c 15 A np random randn M N A mask np nan 我在创建时遇到问题mas

随机推荐

  • C# DLL 配置文件

    我试图将 app config 文件添加到我的 DLL 中 但所有尝试都失败了 据 音乐创世纪 报道 将配置信息放入 DLL 中 这应该不是问题 所以显然我做错了什么 以下代码应从 DLL 返回我的 ConnectionString ret
  • 使用 VBA 方法通过 Bing API 获取距离

    我试图通过 VBA 创建一个方法 当我使用此方法时 它显示 NAME 有时 value Public Function DISTANCE start As String dest As String key As String Dim fi
  • Objective-C UITableView 单元格图像

    所以我有一个UI表格视图Facebook 好友和一个单元格 我想将图像添加到其中 当我尝试以下代码时 cell imageView image UIImage imageWithData NSData dataWithContentsOfU
  • 从数据库或属性获取 Spring Security 拦截 url

    希望这非常简单 存在 并且我忽略了我眼皮底下的一些东西 我知道我可以通过注释限制访问 Secured ROLE ADMIN 或通过配置
  • UIButton标题消失

    我有一个 ViewController 里面有一个 UIButton 当我点击时 按钮上的文字消失了 我为所有状态添加了所有 setTitle 但它继续消失 任何想法 这是我的代码的一部分 interface AddCardViewCont
  • 重塑表格以将行转换为列

    我尝试搜索帖子 但只找到了 SQL Server Access 的解决方案 我需要 MySQL 5 X 中的解决方案 我有一个包含 3 列的表 称为历史记录 hostid itemname itemvalue 如果我做一个选择 select
  • 如何在 mysql C++ 连接器中设置超时

    我正在使用 C 连接器连接到 MySQL 服务器 当服务器离线或处于睡眠状态时 语句执行方法需要一段时间才能检测连接问题 是否有方法或变量来控制客户端的等待超时时间 Regards德瓦拉 古达 您可以使用mysql options设置客户端
  • Swift Spritekit 我检测到碰撞,但它多次读取碰撞

    AppImage我有一堵由 4 个不同颜色的矩形组成的墙 要穿过这堵墙 球的颜色必须与墙上的矩形的颜色相匹配 球将穿过墙壁 新的墙壁将会出现 然而 当我检测到这种碰撞时 我得到了多个碰撞读数 我已经通过打印死或活来测试这一点 并且它会多次打
  • Idea 中的 Tomcat。战争爆发:服务器未连接。部署不可用

    我正在尝试这个tutoial 我创建了新项目并运行它 TomCat 启动了 但之后什么也没发生 我可以手动在浏览器中打开http localhost 8080并查看 TomCat 主页 这意味着服务器可以启动 但是我无法打开index js
  • ajax成功后jQuery继续循环执行

    我有一个循环中的 jQuery ajax 调用 但是我不希望同时进行这些 ajax 调用 我需要先完成第一个 ajax 调用 然后再进行下一个调用 for var i 0 i lt options length i jQuery ajax
  • 在 python 中使用 enumerate() 时从列表中删除元素[重复]

    这个问题在这里已经有答案了 Object 是一个解码后的 json 对象 其中包含一个名为 items 的列表 obj json loads response body as unicode for index item in enumer
  • 如何使用 GAE 创建自动完成功能?

    我使用 jQuery UI自动完成小部件 我还有 GAE 数据存储 class Person db Model key name contains person id in format lastname firstname middlen
  • 如何将 JRE 捆绑到 Java 应用程序的 EXE 中? Launch4j 提示“运行时丢失或损坏。”

    我对 Java 编程很陌生 但总体上熟悉一切的工作原理 我希望能够将 jar 文件和 jre 放入 Windows 可执行文件 exe 中 这样当我分发它时 客户端不需要安装 JRE 我应该使用什么程序 我有 launch4j 它似乎完全符
  • WindowChrome - 无法单击标题栏中的按钮

    我的 WPF 应用程序有一个自定义 WindowChrome 样式 从此处摘取 http www bdevuyst com wpf custom title bar and taskbar 代码在这里
  • pygobject 中的拖放无响应

    我试图让拖放在 pygobject 中正常工作 但它很慢而且反应迟钝 90 的时间我必须挥动我正在拖动的项目才能成功放下它 任何人都可以看看我是否做得不正确或者这是 pygobject 的错误 这是我的代码 from gi reposito
  • 来自网络摄像头流的 Raspberry Pi 3 Python 和 OpenCV 人脸识别

    我尝试使用树莓派 3 型和摄像头模块通过 WiFi 网络传输视频 但发现与我在网上找到的其他示例存在一些不一致之处 我试图获得该视频中执行的第三次测试的结果 https www youtube com watch v sYGdge3T30o
  • 使用 Python 进程进行多处理

    我正在尝试使用 Process 将Python脚本修改为多进程 问题是它不起作用 第一步 按顺序检索内容 test1 test2 在第二个中 将并行调用它 test1 和 test2 实际上没有速度差异 如果单独执行这些函数 您会注意到差异
  • Android ActionBar setActionView布局问题

    我一直在尝试使用 ICS 中 ActionBar 中的 setActionView 看起来应该很简单 但不知怎的 我没有得到我希望的布局对齐 正如您在下图中看到的 目标 图标在其布局中正确居中 但是当我 setActionBar progr
  • 为什么新数组很慢?

    比较操作时 var fat cats cats slice to var fat cats new Array cats length 性能差异令人困惑 在 Firefox 和 Chrome 中new Array速度较慢 当它应该更快时 它
  • 如何正确使用__setattr__,避免无限递归

    我想定义一个包含以下内容的类read and write方法 可以按如下方式调用 instance read instance write instance device read instance device write 为了不使用交错