问题标签 [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.

0 投票
2 回答
6534 浏览

python - 广泛使用python的getattr是不好的做法吗?

我正在创建一个类似 shell 的环境。我最初处理用户输入的方法是使用字典将命令(字符串)映射到各种类的方法,利用函数是 python 中的第一类对象这一事实。

为了灵活性(主要用于解析命令),我正在考虑更改我的设置,以便我使用 getattr(command) 来获取我需要的方法,然后在我的解析器结束时将参数传递给它。这种方法的另一个优点是每次添加新方法/命令时都不必更新我的(当前静态实现的)命令字典。

我的问题是两方面的。首先,getattr 和 eval 有同样的问题吗?其次,我的 shell 效率会受到影响吗?我有多少方法/命令有关系吗?我目前正在查看 30 个命令,这些命令最终可能会翻倍。

0 投票
3 回答
4067 浏览

python - 在 Python 中使用 getattr 调用方法

如何使用 getattr 调用方法?我想创建一个元类,它可以调用以“oposite_”开头的其他类的不存在方法。该方法应具有相同数量的参数,但返回相反的结果。

但问题是

返回一个 NoneType 对象。

如何处理?

0 投票
4 回答
62748 浏览

python - 如何在当前模块上调用 setattr()?

我应该将什么作为第一个参数“ object”传递给函数setattr(object, name, value),以在当前模块上设置变量?

例如:

产生与以下相同的效果:

在包含这些行的模块中(带有正确的object)。

我在模块级别动态生成多个值,并且由于我无法__getattr__在模块级别定义,这是我的后备。

0 投票
5 回答
12979 浏览

python - 通过属性以及索引访问递归访问字典?

我希望能够做这样的事情:

我的动机是提高代码的简洁性,并尽可能使用与 Javascript 类似的语法来访问 JSON 对象以实现高效的跨平台开发。(我也使用 Py2JS 和类似的。)

0 投票
5 回答
34781 浏览

python - __getattr__ 用于 python 中的静态/类变量

我有一个像这样的课程:

无论何时调用MyClass.Fooor MyClass.Bar,我都需要在返回值之前调用自定义方法。在 Python 中可能吗?我知道如果我创建一个类的实例并且我可以定义我自己的__getattr__方法是可能的。但是我的场景涉及使用此类而不创建它的任何实例。

我还需要在调用时调用自定义__str__方法str(MyClass.Foo)。Python 是否提供这样的选项?

0 投票
8 回答
175204 浏览

python - __getattr__ 与 __getattribute__ 之间的区别

我试图了解何时使用__getattr__or __getattribute__文档中提到的__getattribute__适用于新式类。什么是新式班?

0 投票
2 回答
2933 浏览

python - Python Chain getattr 作为字符串

为了将对象的链属性调用作为字符串执行,我不得不开发上面笨拙的片段。我很好奇是否会有更聪明/有效的解决方案。

0 投票
1 回答
3328 浏览

database - 在应用引擎数据存储区中查询缺少属性的实体?

我有一个看起来像这样的模型:

现在当我存储值时,我可能不会每次都为更新的属性填充值,这意味着在某些实体中它可能不存在。

我想构建一个数据存储查询,以便我可以获得所有没有属性更新集的实体实例。

我该怎么做呢?

ps 我知道我可以设置一个默认值,然后查询它。但问题是我有超过 300 万个实体,并且更新只会标记其中的 1%,所以我不想通过将其余的设置为 0 来浪费太多的数据存储空间。

0 投票
6 回答
1635 浏览

python - Pythonic 解决我的 reduce getattr 问题

我曾经使用reduce 和 getattr函数以链式方式调用属性,例如“thisattr.thatattr.blaattar” IE:

工作得很好,但是现在我有一个新要求,我的字符串可以调用特定数量的属性,例如:“thisattr.thatattr[2].blaattar”

现在它不起作用,我得到xattr object has no attribute 'yattr[2]'错误。

什么是一个优雅的解决方案,适用于任何一种方式?

问候

0 投票
3 回答
1256 浏览

python - __getattr__ 的不对称行为,新式与旧式类

这是我第一次在这里写,如果信息没有重点或太长,请见谅。

我有兴趣了解更多关于如何在需要时获取对象的属性。所以我在这里阅读了标题为“数据模型”的 Python 2.7 文档,我遇到了__getattr__,为了检查我是否理解它的行为,我编写了这些简单(且不完整)的字符串包装器。

正如您所看到的,它们是相同的,除了是旧式与新式类。由于引用的文本说__getattr__是“当属性查找在通常的位置没有找到属性时调用”,我想在这些类的两个实例上尝试 + 操作以查看发生了什么,并期待相同的行为。

但是我得到的结果让我有点困惑:

好的!我没有定义一个方法__coerce__(虽然我期待一个请求__add__,没关系:),所以__getattr__参与并返回了一个无用的东西。但是之后

__getattr__为什么在使用像 + 这样的内置运算符时,旧式类和新式类之间会出现这种不对称行为?有人可以帮助我了解发生了什么,以及我在阅读文档时的错误是什么?

非常感谢,非常感谢您的帮助!