python for循环 赋值_python中for循环赋值奇怪问题

听说for循环里面的变量是会泄露到外面,另外还存在地址引用的问题。

参考了几个文章说的,所以特意加了一行info={}来每次都创建一个新的对象。

1.但是,结果还是没变,返回的集合全部是同一个结果。

2.这个info还是灰色的,提示是该变量创建后没有被引用到,这尼玛是逗我吧,,,python什么个机制?

万不得已,把info再弄个深度复制,再append算了?

下面是这个类的源码,这个类的目的是把某A数据源,根据B的结构,构件出一个B。

class PubClass:

@staticmethod

def getInfo(model, data):

info = model

for k, v in vars(model).items():

if isinstance(data, object):

if hasattr(data, k):

setattr(info, k, getattr(data, k))

elif isinstance(data, dict):

if k in data:

setattr(info, k, data[k])

return info

@classmethod

def getList(cls, obj, data, toDict=True):

datalist = []

for d in data:

if toDict:

info = cls.getInfo(obj, d).__dict__

else:

info = cls.getInfo(obj, d)

datalist.append(copy.deepcopy(info)) # 目前只能弄个深度复制来解决,但是性能感觉不太好

return datalist

你可能感兴趣的:(python,for循环,赋值)