问题标签 [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 投票
3 回答
3413 浏览

c++ - C++ 等价于 Python getattr

在 python 中,有一个名为 getattr 的函数,如下所示:

对 getattr 的调用将返回 4。

在 C++(不是 Visual C++)中有类似的方法吗?

是否有任何具有此功能的库,我可以使用字符串查找对象的成员变量?

我试图找到一种方法来查找我无法更改的 C++ 类中的公共数据成员。所以我不能使用映射将字符串文字映射到值。也许就像一个带有宏的“unstringify”?

0 投票
1 回答
6898 浏览

python - gettattr,python 中的“属性必须是字符串”错误

我正在尝试getattr使用生成器在我的代码中使用函数

错误

如果我在 i 上使用字符串强制,那么为什么会出现此错误?

另外,如果我使用代码

然后没有错误

我是python新手,如果我犯了非常基本的错误,请原谅我,请有人详细说明错误。谢谢

编辑:同样的原则适用于这段代码(这是一个来自 Dive into python 的例子)。在这里,做了同样的事情,为什么没有错误?

0 投票
3 回答
31693 浏览

python - Python使用getattr调用带可变参数的函数

我正在使用 getattr 根据变量调用不同的函数。

我正在做这样的事情:

这行得通,调用像 foo.bar() 这样的函数

我的问题是我有'bar'函数,我想用不同的参数调用它。例如:

所以“bar”可以是 f1、f2 或 f3

我试过这个:假设 params 是一个列表,其中包含“bar”函数所需的所有参数

我正在寻找一个“干净”的解决方案,无需查看 params 变量的长度

0 投票
3 回答
1235 浏览

python - 如何将类的子类作为属性访问?

所以我有一个 .py 文件,其中包含一个可以作为属性访问其子类的类。所有这些子类都是预先定义的。我还需要所有子类都具有相同的能力(让它们自己的子类可以作为属性访问)。我一直面临的最大问题是我不知道如何在我的实现中访问当前类__getattr__(),所以这是一个很好的起点。

这是我迄今为止尝试过的一些 Python+伪代码。我很确定它不会起作用,因为它__getattr__()似乎只适用于类的实例。如果是这种情况,对不起,我对 Python 中的 OOP 并不像我希望的那样熟悉。

0 投票
2 回答
1557 浏览

python - Python 中的类混淆与 getattr

此处提出了类似的问题。然而,这些回答并没有真正帮助我理解程序的某些部分是如何工作的。程序如下:

第一个问题是以下如何工作?

我知道以下内容以某种方式生成了房间名称,因此程序可以转到它需要的位置。我只是没有看到它是如何发生的。

我的第二个问题是:

我有点理解 self.pie 正在做的事情。但我不确定 self.start = start 应该完成什么。再次感谢你的帮助。

0 投票
1 回答
11235 浏览

python - “超级”对象不调用 __getattr__

我将一个对象包裹在另一个对象中。“Wrapper”通过覆盖来访问“Wrapped”对象的属性__getattr__。这很好用,直到我需要覆盖子类的属性,然后使用super().

我仍然可以直接访问该属性,__getattr__但为什么不起作用super()

0 投票
2 回答
1648 浏览

python - 为什么 __getattr__ 不会因为缺少“神奇”调用的方法而被调用?

我正在尝试实现一个类,其中尝试访问当前类或其任何祖先中不存在的任何属性将尝试从成员访问这些属性。下面是我正在尝试做的一个简单的版本。

但是,这会引发TypeError. 即使使用operator模块的attrgetter类也会做同样的事情。我正在查看有关自定义属性访问的文档,但我发现它并不容易阅读。我怎样才能解决这个问题?

0 投票
4 回答
2329 浏览

python - python中的动态方法生成

我目前有这个代码:

这使:

我必须做些什么才能让它给出:

0 投票
5 回答
25843 浏览

python - 在python中获取动态属性

我有一个可以用三种不同方式命名的特殊属性的对象(注意:我不控制生成对象的代码)

属性中的值(取决于设置的值)完全相同,我需要获取它以进行进一步处理,因此根据数据源,我可以有类似的东西:

或者

或者

我有兴趣获取'value',不幸__dict__的是该对象中不存在属性。所以我最终为获得这个价值所做的只是打了一堆getattr电话。假设可能性只有三种,代码如下所示:

现在,我想知道是否有更好的方法?因为我 100% 相信我所做的 :)

提前致谢

0 投票
1 回答
5747 浏览

python - python - 尝试为动态添加的类覆盖 __getattr__ 但只能进行排序

我正在尝试在运行时向现有类添加一个新类(使用“type(...)”)。我还试图覆盖那个新类' __getattr__ 以便我可以对不在新类中的属性执行我自己的行为。例如,我有类 foo,我添加类“工具”,我希望 foo.tool.test 做我自己的事情。下面的代码有效,但只是部分有效。如果我显式调用 __getattr__,它可以工作(参见第一个打印),但是当我引用 foo.tool.test 时,我的覆盖 __getattr__ 不会被调用,并且会引发 attrbute 错误。

非常感谢您的帮助。