问题标签 [getattr]
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 - 广泛使用python的getattr是不好的做法吗?
我正在创建一个类似 shell 的环境。我最初处理用户输入的方法是使用字典将命令(字符串)映射到各种类的方法,利用函数是 python 中的第一类对象这一事实。
为了灵活性(主要用于解析命令),我正在考虑更改我的设置,以便我使用 getattr(command) 来获取我需要的方法,然后在我的解析器结束时将参数传递给它。这种方法的另一个优点是每次添加新方法/命令时都不必更新我的(当前静态实现的)命令字典。
我的问题是两方面的。首先,getattr 和 eval 有同样的问题吗?其次,我的 shell 效率会受到影响吗?我有多少方法/命令有关系吗?我目前正在查看 30 个命令,这些命令最终可能会翻倍。
python - 在 Python 中使用 getattr 调用方法
如何使用 getattr 调用方法?我想创建一个元类,它可以调用以“oposite_”开头的其他类的不存在方法。该方法应具有相同数量的参数,但返回相反的结果。
但问题是
返回一个 NoneType 对象。
如何处理?
python - 如何在当前模块上调用 setattr()?
我应该将什么作为第一个参数“ object
”传递给函数setattr(object, name, value)
,以在当前模块上设置变量?
例如:
产生与以下相同的效果:
在包含这些行的模块中(带有正确的object
)。
我在模块级别动态生成多个值,并且由于我无法__getattr__
在模块级别定义,这是我的后备。
python - 通过属性以及索引访问递归访问字典?
我希望能够做这样的事情:
我的动机是提高代码的简洁性,并尽可能使用与 Javascript 类似的语法来访问 JSON 对象以实现高效的跨平台开发。(我也使用 Py2JS 和类似的。)
python - __getattr__ 用于 python 中的静态/类变量
我有一个像这样的课程:
无论何时调用MyClass.Foo
or MyClass.Bar
,我都需要在返回值之前调用自定义方法。在 Python 中可能吗?我知道如果我创建一个类的实例并且我可以定义我自己的__getattr__
方法是可能的。但是我的场景涉及使用此类而不创建它的任何实例。
我还需要在调用时调用自定义__str__
方法str(MyClass.Foo)
。Python 是否提供这样的选项?
python - __getattr__ 与 __getattribute__ 之间的区别
我试图了解何时使用__getattr__
or __getattribute__
。文档中提到的__getattribute__
适用于新式类。什么是新式班?
python - Python Chain getattr 作为字符串
为了将对象的链属性调用作为字符串执行,我不得不开发上面笨拙的片段。我很好奇是否会有更聪明/有效的解决方案。
database - 在应用引擎数据存储区中查询缺少属性的实体?
我有一个看起来像这样的模型:
现在当我存储值时,我可能不会每次都为更新的属性填充值,这意味着在某些实体中它可能不存在。
我想构建一个数据存储查询,以便我可以获得所有没有属性更新集的实体实例。
我该怎么做呢?
ps 我知道我可以设置一个默认值,然后查询它。但问题是我有超过 300 万个实体,并且更新只会标记其中的 1%,所以我不想通过将其余的设置为 0 来浪费太多的数据存储空间。
python - Pythonic 解决我的 reduce getattr 问题
我曾经使用reduce 和 getattr函数以链式方式调用属性,例如“thisattr.thatattr.blaattar” IE:
工作得很好,但是现在我有一个新要求,我的字符串可以调用特定数量的属性,例如:“thisattr.thatattr[2].blaattar”
现在它不起作用,我得到xattr object has no attribute 'yattr[2]'
错误。
什么是一个优雅的解决方案,适用于任何一种方式?
问候
python - __getattr__ 的不对称行为,新式与旧式类
这是我第一次在这里写,如果信息没有重点或太长,请见谅。
我有兴趣了解更多关于如何在需要时获取对象的属性。所以我在这里阅读了标题为“数据模型”的 Python 2.7 文档,我遇到了__getattr__
,为了检查我是否理解它的行为,我编写了这些简单(且不完整)的字符串包装器。
正如您所看到的,它们是相同的,除了是旧式与新式类。由于引用的文本说__getattr__
是“当属性查找在通常的位置没有找到属性时调用”,我想在这些类的两个实例上尝试 + 操作以查看发生了什么,并期待相同的行为。
但是我得到的结果让我有点困惑:
好的!我没有定义一个方法__coerce__
(虽然我期待一个请求__add__
,没关系:),所以__getattr__
参与并返回了一个无用的东西。但是之后
__getattr__
为什么在使用像 + 这样的内置运算符时,旧式类和新式类之间会出现这种不对称行为?有人可以帮助我了解发生了什么,以及我在阅读文档时的错误是什么?
非常感谢,非常感谢您的帮助!