class myclass:
def __init__(self, aty):
self.number = 0;
self.anitype = aty;
l = [];
l.append(myclass("tiger"))
l.append(myclass("lion"))
l.append(myclass("puma"))
l.append(myclass("jagur"))
# Method 1 : of course this doesn't work, but I saw a case where it works
#for idx in l: l[idx].number = idx
# Method 2 : of course this works
for idx, lst in enumerate(l):
l[idx].number = idx
for idx, lst in enumerate(l):
print("%d : %s" % (lst.number, lst.anitype))
0 : tiger
1 : lion
2 : puma
3 : jagur
当然,方法1应该不起作用,但是今天我看到了从另一家公司收到的一些代码,下面有一行代码
for idx in ls: ls[idx].Oi = idx
ls
是类对象的列表。类有一个实例成员变量Oi。
我觉得这行代码有点奇怪,于是用调试器运行了代码,它就运行了!列表成员对象的Oi值被指定为0,1,2,3,。。
这是怎么回事?顺便说一句,这行代码出现在一个不是类的成员函数(它是一个全局函数)的函数中。