Python 为什么setattr对属性和方法的工作方式不同?

Python 为什么setattr对属性和方法的工作方式不同?,python,Python,当我设置属性时,getattr结果的id将更改为值id。 当我设置一个方法时,getattrresultid不会改变。 为什么? 区别在于python中方法的工作方式 注意 >>> B.b <unbound method B.<lambda>> 你也可以看看 B.__dict__['b'] 前后非常感谢!这就是我要找的。 class B (object): def b(self): return 1 b = lambda se

当我设置属性时,
getattr
结果的
id
将更改为值
id
。 当我设置一个方法时,
getattr
result
id
不会改变。 为什么?


区别在于python中方法的工作方式

注意

>>> B.b
<unbound method B.<lambda>>
你也可以看看

B.__dict__['b']

前后

非常感谢!这就是我要找的。
class B (object):
    def b(self):
        return 1
b = lambda self: 42
print id(getattr(B, 'b'))
print id(b)
setattr(B, 'b', b)
print id(getattr(B, 'b'))
print id(getattr(B, 'b').im_func)  # grab function from the descriptor


4424060752
4440057568
4424060752
4440057568   # here's our new lambda
B.__dict__['b']