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

0 投票
2 回答
5055 浏览

python - 为什么 setattr 在绑定方法上失败

在下文setattr中,第一次调用成功,但第二次调用失败,其中:

为什么会这样,有没有办法在方法上设置一个属性,使其只存在于一个实例上,而不是类的每个实例上?

Python 3.2.2

0 投票
7 回答
3477 浏览

python - python koans:类代理

我正在解决python koans。直到 34 号,我才遇到任何真正的问题。

这就是问题:

项目:创建代理类

在这个作业中,创建一个代理类(下面为您启动一个)。您应该能够使用任何对象初始化代理对象。代理对象上调用的任何属性都应该转发给目标对象。在发送每个属性调用时,代理应该记录发送的属性的名称。

代理类已为您启动。您将需要添加一个缺少处理程序的方法和任何其他支持方法。代理类的规范在 AboutProxyObjectProject 公文中给出。

注意:这有点棘手,它是 Ruby Koans 对应物,但你可以做到!

到目前为止,这是我的解决方案:

在此测试之前它一直有效:

因为tv.messages()是由代理对象而不是电视对象获取的['power']。 我试图操纵该方法,但我总是以无限循环结束。tv.channel=10
__setattr__

编辑1:

我正在尝试这个:

但是后来我在最后一个条目的循环中得到了这个错误:

循环在__getattr__.

0 投票
3 回答
1845 浏览

python - __setattr__ 仅适用于在对象属性中找不到的名称?

我只想__setattr__在对象的属性中找不到该属性时使用,例如__getattr__.

我真的必须使用try-except吗?

0 投票
1 回答
994 浏览

python - 如何取消覆盖 __setattr__ 方法?

这个问题的目的是了解python中的内置函数是如何“内置”的。

如果我覆盖 setattr 方法,我该如何取回它?例如,我有这样的“工作”类:

和这样的“非工作”类:

现在我创建对象 w 和 n,并运行以下命令:

输出是:

请注意,na 应该打印“b”,但它会打印“a”,因为 setattr 不会更改属性。

问题是:我应该如何修改对象n 以便它像对象w 一样工作。请注意,我的意思是对象,而不是类。

0 投票
2 回答
891 浏览

python - GetAttr 函数问题 (Python 3)

我在 Python 脚本中有以下内容:

这给了我以下错误:

谁能告诉我这里有什么问题?

0 投票
1 回答
804 浏览

python - __setattr__ 类装饰器 python

我正在使用类装饰器,但我不明白如何使用setattr设置属性,这是我的代码:

但是当我这样做时:

我有这个输出:

我该怎么做才能有这个输出?

0 投票
1 回答
5472 浏览

python - Python 类作为数据存储

我正在尝试编写一个类似于某种数据存储的 Python 类。因此,例如,我不想使用字典,而是想以class.foo的形式访问我的数据,并且仍然能够执行所有很酷的事情,例如像在dataclass中的 x一样对其进行迭代。

以下是我想出的:

而且,显然它有效。万岁!但是如何正确实现属性的设置呢?添加以下内容会导致递归限制__getattr__

阅读文档,我应该调用超类(对象)__setattr__方法以避免递归,但这样我就无法控制我的 self._data 字典。

有人可以指出我正确的方向吗?

0 投票
6 回答
184104 浏览

python - 在 python 中使用 setattr()

我正在找人解释如何使用的基础知识,而不是使用setattr().

我的问题是试图使用一个类方法/函数来返回数据,然后将其放入另一个方法/函数中。在这种情况下,也许一种更简单的方法会更好,但我试图了解类是如何工作/使用的。这个问题似乎取决于setattr(),这是我尝试相当简单地使用它。

虽然这不是同一个问题,但我一直在关注Python The Hard Way,ex42while第 18-41 行的循环。

我尝试编写一个\__init__(), 并getattr()改为使用,认为可能需要在类的命名空间中,但这似乎没有帮助。


@Karl Knechtel、@Amber、@Chris Morgan 感谢您的帮助。

我想我现在可以解释我自己的答案了!这需要我更好地把握作为对象的自我。这是一个实例名称,它被标记为属性之类的东西。

类可以是 Town,然后。 getattr用它的名字寻找房子,所以你很快就可以打电话给它了,如果你找不到房子,就会想出一个不同的地方——getattr有了“名字”,你就去找它。使从一个函数到另一个动态的步骤作为奖励,您可能有一个默认值,对于获取回退默认方法很有用——连接失败还是什么?

setattr建造一所房子并给它起一个名字,这样你以后可以打电话给它。你可能会重建这所房子,或者如果你找不到它就去一个特定的地方。--setattr创建一个属性名称并给出或更改它的值,以便稍后调用 也许用户关闭声音,然后未来的方法不会输出任何音频。

我可以通过多种方式编写函数,但无需更改任何属性:

正确更正的代码:

0 投票
2 回答
267 浏览

python - setattr、对象删除和循环垃圾回收

我想了解对象删除如何在 python 上工作。这是一组非常简单的代码。

Pythonista 会识别出我正在运行 python 2.x 版本。更具体地说,此代码在 python 2.7.1 设置上运行。

此代码输出以下内容:

令人惊讶的是,A对象没有被删除。我可以理解为什么,因为 in 中的setattr语句__init__会产生循环引用。但这似乎很容易解决。

最后,在python 文档 (Supporting Cyclic Garbage Collection)中的这个页面显示了处理这种循环引用是可能的。

我想知道:

  • 为什么我从不__del__在课堂上通过我的方法A
  • 如果我对循环引用的诊断是好的,为什么我的object子类不支持循环垃圾收集?
  • setattr最后,如果我真的想通过,如何处理这种情况__del__

注意:A如果setattr指向我模块的另一个方法,则没有问题。

0 投票
3 回答
4311 浏览

python - How can I reach a private variable within the object

I would like to modify an object private variable

I tried the code above and it's seems that not possible to reach a private variable,

Is there any way to modify a private variable?