问题标签 [setattr]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 如何清理 exec 的使用,无法让 setattr 完成这项工作?
我想检查以文本表示的任意(在数据中定义的)规则集,而 eval() 很好地完成了这项工作。
例如,定义一个规则来检查 A 和 B 是否都有效:
那么如何动态地将值分配给任意一组项目呢?
我有一个命名选项列表和一个选择列表。选择中的所有内容都被认为是有效的 (True),而选项中的所有内容,而不是选择中的所有内容都被认为是无效的 (False)。
所以这段代码有效,但我不喜欢它,因为我在本地名称空间中设置值,我无法防止选项名称与我的本地变量发生冲突。
我曾尝试使用 setattr,但不清楚 setattr 设置了什么,并且 eval 似乎无法使用设置的值。
我在 python 2.7x
欢迎任何建议?
python - 如何在 Python 的嵌套对象中设置属性?
我正在第一次尝试 Python。
我需要遍历日志,解析日志条目,然后更新一个对象,其中包括日志中列出的机器的嵌套对象。
这就是我所拥有的:
我在尝试时遇到的错误setattr()
是
但我怕事情没有这么简单……
问题:
如何last
使用“setattr”更新嵌套对象中的值?还是有另一种更新嵌套对象属性的方法?
python - 在没有 eval() 的 pymongo 中设置一个 mongo 数据库。也许 setattr()?
我已经习惯在 pymongo 中这样做作为访问特定数据库的一种方式:
然后查询 db.collectioname.find() 等。但是,我现在希望能够连接到通过变量命名的数据库,并着眼于循环一系列数据库。所以像:
我被教导 eval() 有时是魔鬼,应该避免。如何使用 setattr() 或其他解决方案做到这一点?就像是...
python - Python 结合 setattr 和 getattr
我想动态更新一个类的属性,但似乎 setattr 和 getattr 的组合不起作用,因为我想使用它。
这是我的主要课程:
请注意,出于该示例的目的,我明确构建了属性列表及其各自的值。但是,在这段代码的实际应用中,我事先并不知道任何事情。它们的编号、名称或值都不是。这需要动态地执行此操作。
这是其余的代码:
当我运行代码时,这部分不起作用。我可以将 getattr 部分保存在 tmp 变量中,然后在调用 setattr 之前调用列表的 append 方法,但如果可能的话,我想压缩它。
任何人都可以向我解释为什么这不起作用?我有什么选择?
谢谢你的帮助
python - Python,如何在作为重载方法的类的一部分的字典对象上使用 __setattr__?
如下面的代码所示,为什么我不能__setattr__
在作为重载方法的类的一部分的 dict 上设置值?我预计这b.hello
不会存在。
python - Python:__setitem__ 之间的差异;setattr ; 放
在其中 3 个不能互换的情况下,可以通过示例进行简单的解释。
上面的步骤可以用 setattr(obj,val[,can optional stuff come here??]) 迭代完成吗?
为什么不创建我们自己的风格和私有方法呢?
问:所有类的范围都允许访问和使用这些私有方法吗?
python - Python - 如何从类中动态删除方法 - 即与 setattr 相反
我不知道我这里是否有一个好的设计,但是我有一个派生自 unittest.TestCase 的类以及我设置它的方式,我的代码将在调用 unittest 之前动态地将一堆test_*
方法注入到类中穿过它。我用setattr
这个。这一直运作良好,但现在我有一种情况,我想删除我之前注入的方法并注入一组新的方法。如何删除名称与模式匹配的类中的所有方法test_*
?
python - Python:使用 __dict__ 避免 __setattr__ 循环,它不应该循环吗?
我知道您在重新定义setattr方法时应该注意,您可能会以循环结束。
我知道有两种解决方案可以避免循环:
1)使用对象超类,调用:
2)使用类字典:
我的问题是,__dict__
解决方案不应该也陷入循环吗?为什么不是?
是因为我们这样称呼对象(一切都是对象)还是什么__setattr__
?__dict__
如果是这样,它不应该对所有事情都一样吗?
python - 如何正确使用__setattr__,避免无限递归
我想定义一个包含read
和write
方法的类,可以如下调用:
为了不使用交错类,我的想法是覆盖__getattr__
and__setattr__
方法并检查给定名称是否device
将返回重定向到self
. 但是我遇到了一个无限递归的问题。示例代码如下:
正如在__init__
代码中试图创建一个新属性x
,它调用__setattr__
,它再次调用__setattr__
等等。我如何需要更改此代码,在这种情况下,创建一个新属性x
,self
保存值1
?
或者有没有更好的方法来处理像instance.device.read
被“映射”到的呼叫instance.read
?
因为总是有关于为什么的问题:我需要创建xmlrpc
调用的抽象,可以创建非常简单的方法myxmlrpc.instance,device.read
和类似的方法。我需要“模拟”它以模仿这种多点方法调用。
python - Python:试图从另一个类实例的输出中设置一个类实例的属性
我有内容块“实例”的列表,在处理列表时,每个块的内容都是在内容类型类的实例中生成的(如果有意义的话)。
当我遍历列表时,我试图使用来自 extra_modules 的命名模块实例的输出来设置模块实例的属性。如果有更好的方法来写这个问题,请随时编辑。
以下只是我尝试使用 Python Bottle 框架运行的测试代码示例。在将内容生成代码实际放入 photoGallery 类之前,我正在尝试获取测试输出。
核心.py:
extra_modules.py:
这是我从 Bottle 的开发服务器得到的错误:
我真的不能很好地理解这个错误,而且我看代码的次数越多,我就越困惑自己。我现在尝试了几种不同的方法来从类实例中获取输出并将其分配为我的示例中的 moduleBlocks 类的属性。我哪里错了?
编辑:我现在已将我的 setattr 行更改为两个单独的行,并摆脱了 extra_modules photoGallery 类中的返回输出,现在一切正常,谢谢: