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

for k, v in kw.iteritems(): setattr(self, k, v)求解这两行代码

for k, v in kw.iteritems():
            setattr(self, k, v)
为什么有k,v两个参数
为什么使用kw.iteritems()有什么作用
第二行代码是设置新的属性,还是前面的问题,为什么不是一个一个的


正在回答

4 回答

**kw,本质是个dict对象,for in 通过dict的iteritems迭代器循环中会读取出key 和 value ,key是dict的key,value则是对应值。

这样获取的属性设置只能通过setattr,因为你要设置的是属性的名称,而直接self.k的方式设置的属性为k,而且不是k的内容。

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

因为**kw是关键字参数,是用于字典的,因此就有键值对一说。

for k, v in kw.iteritems():
这句代码的意思是遍历迭代字典里面的内容然后设置事例的属性 经过setattr参数的设置后,实例中就匹配上了关键字参数中的键值对,也就是代码中的course和python
0 回复 有任何疑惑可以回复我~
**kw这里其实关注的是**这两个代表着关键字参数,kw是可以我们自己命名的,一个*表示的是可变参数,可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple,而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict
for k, v in kw.iteritems():  这里的作用是循环,赋值,因为KW是两个**的,所以在P那一列赋值的时候必须使用age=18,这样的格式age就相当于name,18就相当于'Male',然后系统会检查这个赋值后,后面还有没有,有的话继续赋值,但是都必须符合那个规格来。
            setattr(self, k, v) 这里的作用是在实列__init__中添加一个age,在给它赋值18.


1 回复 有任何疑惑可以回复我~
iteritems()是python 2 中字典对象的方法 动态遍历并返回字典中的键值对,items()是python 2/3中都有的方法,
直接返回一个包含元组的array 形如[(k1,v1),(k2,v2)...]
0 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

for k, v in kw.iteritems(): setattr(self, k, v)求解这两行代码

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