为了账号安全,请及时绑定邮箱和手机立即绑定

setattr(self,k,v)相当于self.k = v

setattr(self,k,v)相当于self.k = v  

为什么不能替换呢

正在回答

4 回答

不是的哦。

self.k意思是给实例增加了个k属性,这里的k是固定不变的,和name,score什么的没区别。

而setattr(self, k, v)里的k和v是变量,是动态变化的。

见下图,直接打印 a.k属性,这个属性名称就是k。

http://img1.sycdn.imooc.com//59085f590001dd7703110345.jpg


3 回复 有任何疑惑可以回复我~

setattr(self,k,v)是设置新的属性并且赋值,而self.k = v  只是赋值了一个变量,如果程序增加新的属性,会提示没有该新属性,所以不能替换,前者的功能大于后者。

1 回复 有任何疑惑可以回复我~
#1

glre09

不同意楼上, for k,v in kw.iteritems(): setattr(self,k,v) setattr(self,k,v)也只是赋值了一个变量,新增加的属性,可以通过for 循环增加
2016-02-23 回复 有任何疑惑可以回复我~

setattr(self,k,v) 是相当于self.k = v吗?


0 回复 有任何疑惑可以回复我~
#1

小二百

是的,官方文档内容:setattr(...) setattr(object, name, value) Set a named attribute on an object; setattr(x, 'y', v) is equivalent to ``x.y = v''.
2015-11-27 回复 有任何疑惑可以回复我~

顺序只要与for k,v in kw.iteritems()的k,v一致即可

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255757    人
  • 解答问题       2946    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

setattr(self,k,v)相当于self.k = v

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信