class Car: pass
c1 = Car()
c2 = Car()
attr = "price"
value = 20000
for obj in c1,c2 : setattr(obj, attr, value)
这会将“price”属性设置为c1
和c1
个实例。
但是for
循环如何与obj一起使用?
答案 0 :(得分:0)
Python元组由逗号:
组成>>> class Car: pass
...
>>> c1 = Car()
>>> c2 = Car()
>>> c1, c2
(<__main__.Car instance at 0x1031fa368>, <__main__.Car instance at 0x1031fa290>)
>>> type(_) # type of the last result
<type 'tuple'>
圆括号是可选;你也可以把元组写成(c1, c2)
。
for
循环只是遍历那个元组;循环将元组中的每个元素分配给obj
进行该迭代:
>>> for obj in c1, c2: print obj
...
<__main__.Car instance at 0x1031fa368>
<__main__.Car instance at 0x1031fa290>
因此, obj
首先绑定到Car
实例c1
引用,然后绑定到c2
个引用。
循环因此只执行此操作:obj = c1
,然后obj = c2
,并在每次此类分配后执行循环体。 setattr()
调用只会将attr
字符串中指定的属性设置为value
中的值。
答案 1 :(得分:-1)
Class Car: pass
是一个空类声明,类似于C中的结构,然后是:
c1 = Car()
c2 = Car()
两个Car实例,未初始化,然后,
attr = "price"
value = 20000
两个变量,最后,
for obj in c1, c2 : setattr(obj, attr, value)
使用&#34;帮助&#34;迭代它们。 object,用于将属性设置为变量中的值到两个实例。