gpt4 book ai didi

python - 为什么 setattr 不能用作方法?

转载 作者:行者123 更新时间:2023-11-30 23:22:02 24 4
gpt4 key购买 nike

我想以编程方式更改类的某些属性。

我发现有setattr函数,但它没有按预期工作。

> obj.setattr('bar', 99)
'MyClass' object has no attribute 'setattr'

相反,我必须使用

> setattr(obj, 'bar', 99)

这是为什么呢?我认为,在Python中,对象调用方法将对象本身设置为第一个参数,因此两者应该意味着相同。

或者Object根本没有setattr的定义?

最佳答案

object setattr 方法是 __setattr__:

>>> dir(object)
['__class__', '__delattr__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']

并且当您使用x.y = v时,将调用__setattr__('y', v)

setattr的帮助信息:

setattr(x, 'y', v) is equivalent to ``x.y = v''.

因此 setattr(x, 'y', v) 等价于 x.y = v 然后等价于 x.__setattr__('y', v )

关于python - 为什么 setattr 不能用作方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24695095/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com