class Example:
# 坑
container = {}
def __init__(self):
# do init
pass
def result(self):
if self.container:
return self.container()
self.container["a"] = self._a()
self.container["b"] = self._b()
return self.container
def _a(self):
# fetch data
return "a"
def _b(self):
# fetch data
return "b"
今天用了一个这样的结构来处理部分数据.然后就出现了第二个实例返回的结果和上一个一样的情况. 反思了一下自己在写代码的时候根本没注意到这个 container 在两个实例里可能会指向同一个地址的问题.写 python 两年多一直在很小心 list 和 dict 作为参数时避免采坑,没想到今天换了个地方踩了一下,不知道别人是不是了解这个坑,发出来给大家看看吧