我很难理解列表中对象的实例。 如何在不保存实例的情况下将对象的值保存到列表中? 这不可能不是吗? 下面的colde工作,但我想避免使用.value,因为我可能有几个参数..不确定我是否足够清楚..
class BougieBuffer:
def __init__(self):
self.bougiebuffer=deque(maxlen = 10000)
self.maximum = Maximum()
def update(self,bougie):
self.maximum.value = random.randint(-1,1)
bougie.maximum.value = self.maximum.value
self.bougiebuffer.append(bougie)
print len(self.bougiebuffer)
for i in range (len(self.bougiebuffer),0,-1):
print self.bougiebuffer[i-1].prixFermeture, self.bougiebuffer[i-1].maximum.value
我自然会写下面的内容,但显然这不起作用,它会为所有
返回相同的值bougie.maximum = self.maximum
答案 0 :(得分:1)
您要创建Maximum()
实例的副本以分配给bougie.maximum
属性;使用copy.copy
或copy.deepcopy
:
from copy import deepcopy
bougie.maximum = deepcopy(self.maximum)
如果deepcopy
的任何属性是可变的,您将需要Maximum
; list
,dict
,set
或其他自定义类实例都是可变的,但不是整数和字符串之类的东西。