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
resultid
不会改变。
为什么?
区别在于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']