问题标签 [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 回答
4258 浏览

python - Python 结合 setattr 和 getattr

我想动态更新一个类的属性,但似乎 setattr 和 getattr 的组合不起作用,因为我想使用它。

这是我的主要课程:

请注意,出于该示例的目的,我明确构建了属性列表及其各自的值。但是,在这段代码的实际应用中,我事先并不知道任何事情。它们的编号、名称或值都不是。这需要动态地执行此操作。

这是其余的代码:

当我运行代码时,这部分不起作用。我可以将 getattr 部分保存在 tmp 变量中,然后在调用 setattr 之前调用列表的 append 方法,但如果可能的话,我想压缩它。

任何人都可以向我解释为什么这不起作用?我有什么选择?

谢谢你的帮助

0 投票
1 回答
7057 浏览

python - 在python中获取类和实例的属性

在 python 工作下一个代码:

当我想要自定义字段的返回值时,我使用下一个代码:

但:

好的,对于我可以使用下一个代码的类:

但:

为了解决这个问题,我使用下一个代码:

MyClass.fake将调用__getattr__withMyClassfakearguments。

MyClass().fake将调用实例和__getattr__参数。MyClassfake

__getattr__如果我只在我的 mixin 上实现逻辑并且不使用self参数,那也没关系。

我可以编写更漂亮的类和实例的自定义值解析吗?如果与方法相比,为什么值解析和定义的field工作MyClass.field方式不同?因为当我想首先在实例中搜索时,然后在课堂上,但我不明白为什么以另一种方式工作。MyClass().fieldMyClass(object): field = 1__getattr__field__getattr__

类似的问题:类上的 __getattr__ 而不是(或以及)实例访问实例属性和类属性之间的区别

0 投票
3 回答
126 浏览

python - Python:使用代码编写代码 - 适合初学者

我现在遇到的问题是将一堆声音文件作为它们自己的对象加载到 Pygame 中。您可以使用以下语法加载声音:

假设我有七个文件,我希望将它们加载并命名为 sound1 - sound7。而且我不想单独加载它们。如果我不知道它有缺陷,我会尝试这样的事情:

我将如何着手使“新”成为自己的变量,而不是字符串?我读过关于 getattr 的文章,但它令人困惑。我真的很想知道如何使用函数和循环来动态创建代码,但到目前为止,我找不到对像我这样的初学者有用的东西。以此为例,有人愿意以简单的方式解释在代码中创建代码并将字符串转换为可用变量/对象的方法吗?

谢谢!

0 投票
2 回答
135 浏览

python - 如何将任意字符串作为命令运行

我看到 getattr() 用于一些简单的方法/函数调用的答案。

任意字符串怎么样,例如在这里进行网络解析:

工作正常,但是运行来自数据库的解析器字符串怎么样?字符串可以是:

或完全匹配任何东西,取决于网页。

0 投票
2 回答
193 浏览

python - __getattr__ 在 python 的一个模块中

我正在使用 python。我想知道同一个模块中是否存在任何方法。我想getattr()这样做,但我做不到。这是示例代码,说明了我真正想要做什么。

我的主要任务是动态调用定义的方法。如果未定义,只需跳过该方法的操作并继续。我有一个数据字典,根据键我定义了一些必要的方法来操作相应的值。例如数据是 {"name":"my_name","address":"my_address","...":"..."}. 现在我定义了一个方法name(),我想动态地知道它是否真的存在。

0 投票
2 回答
79 浏览

python - 如何将这些功能通用化

我想缩短我的代码,因为我有更多这样的功能。我想知道我是否可以使用 getattr() 来做这个人问的事情。

好吧,这就是我所拥有的:

我正在使用pymongoflask助手JSON

我想要的是创建一个getAllFrom(x,db)接受任何类型对象的函数。我不知道该怎么做,但我想调用db.X.find()X通过函数传递的位置。

嗯,就是这样。希望您能够帮助我。谢谢!

0 投票
2 回答
1959 浏览

python - 在python中将字符串转换为函数

我有一个来自数据库的字符串。此字符串是模块内的文件 .py 的名称。结构是这样的:

file1.py包含:

file2.py包含:

我需要将字符串转换为可调用的函数。

main.py文件中我尝试:

谁能帮我?

0 投票
2 回答
1212 浏览

python - 为什么“__getattr__”在python“ctypes”中不起作用?

我在“datetime”的例子中停止它,在lxml的一个真实例子中重写。
(这可能很奇怪,因为英文是在谷歌翻译中翻译的,我很抱歉。)

据认为我喜欢 lxml 的性能非常好,但源代码很难阅读。
如果你积极使用XML,我也可以经常修改python的代码。
时间已经过去了,因为忘记了,源码因为很难理解,
我花时间调试和修复。
例如,我认为通常当您搜索如下:深层 XML 层次结构。

我想如下使用。
(使用此代码它只是我。)

我试过类继承是先实现这个的。
您已经通过参考“在 lxml 中使用自定义元素类”进行了一些自定义。
我使用__getattr__来搜索 XML 元素。

(Ex.1)成功的例子。
但是(Ex.2)的例子在etree._Element depth1的返回实例中变成了Attribute Error __getattr__is not present。

虽然不是(补充)实用,但我使用了一个示例,在 Easy to understand 的第一个问题中添加了“日期时间”的“毫秒”。

当时认为这是一种使用 ctypes 模块向 lxml 的 Element 类添加函数的方法。

=> 返回 _Element 对象

=>def __getattr__(self, k):
=> ret = self.xpath("//" + k)
=> setattr(self, k, ret)
=> return getattr(self, k)
源被添加..

=> AttributeError .. no attribute 'depth3'

我不知道是否或应该写如何使用“PyObject_GetAttr”。
请告诉我是否。

最好的问候


====================上一个问题========================== =========
我正在尝试增强 ctypes。添加功能通常很顺利。但是,如果添加特殊方法,它不起作用,为什么?

这打印155 155958,好的!

这不起作用,为什么?

0 投票
1 回答
447 浏览

python - 为什么 Python 寻找 __members__ 而不是请求的字段?

我有一个定义自己的类,__getattr__()以便与实例化对象包含的 XML 树进行交互。这对用户隐藏了 XML 结构,并允许他设置标签值等,就好像它们是对象上的普通字段一样,并且适用于所有字段,除了一个:名为field. 这是它的外观:

效果很好,应该发生的副作用就是这样做的。但是如果我尝试设置 field field,我会得到一个方法不应该返回的字符串。为清楚起见,这是 my 的简化版本__getattr__

ensemble_member并且field都在field_list. 看一下这个:

for 的行为ensemble_member是正确field的,因为它完全不正确。这是为什么?

我没有方法,也没有名为field.

另一个有趣的事情是,如果我把它放在第一行__getattr__

仍然会发生以下情况:

这是怎么回事?

0 投票
1 回答
171 浏览

python - 在python中包装和同步信使类

我想创建一个包含在其他几个类之间共享的信使类的结构。我想保持信使和子类之间的参数同步,并且我还希望子类能够通过信使相互访问。我目前已按如下方式实现它,但在同步方面存在一些问题:

我猜测这种差异是由于缺乏对在 Python 中何时通过引用存储事物与按值存储事物的理解,或者可能是getattr覆盖中存在一些奇怪的漏洞。也许我可以添加某种同步功能来确保一切都保持同步,但它已经感觉很hackish,我认为有一个更清洁的解决方案。最终目标是拥有一个信使类和子类,它们与该信使透明地交互以创建/存储属性并保持一切同步。

注意,虽然这个例子没有展示出来,但实际的应用程序还要求子类可以访问彼此的方法(以及信使的方法)。不确定这是否有任何区别。

有任何想法吗?我是在正确的轨道上还是应该做一些完全不同的事情?我查看了元类和装饰器,但无法立即看到它们是否/如何帮助我。