2013-04-18 6 views
0

목록에있는 객체의 인스턴스를 이해하는 데 어려움이 있습니다. 인스턴스를 저장하지 않고 개체의 값을 목록에 저장하는 방법은 무엇입니까? 이것은 불가능하지 않습니까? 작품 아래 colde하지만 난 여러 매개 변수가있을 수 있습니다으로 내가 충분히 명확 나는 경우 확실하지 .. .value 사용하지 않도록하고 싶습니다은 ..객체 대 객체 값 python

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 속성에 할당 할 Maximum() 인스턴스의 사본을 만들려면 모든

bougie.maximum = self.maximum 
+0

개체의 값은? 인스턴스는 객체이고, 클래스는 객체이며, 인스턴스 속성은 모든 객체입니다. 여기서 무엇을 이루려고합니까? –

+0

안녕하세요 마틴, 나는 최대 bougie.maximum에 저장하려고 노력하고 있습니다. 그러나 최대 클래스는 여러 속성 (예 : 값, 시간 등)을 포함하고 있습니다. bougie.maximum.value = self.maximum을 작성해야합니다. 값 및 클래스의 모든 다른 특성에 대해이 작업을 반복하지만 한 줄에 모든 것을 "저장"하려면 bougie.maximum = self.maximum을 써야합니다. 그러나 작업을하지 못하고 "모든"마지막 인스턴스 만 "저장했습니다". – matel

+0

하지만 그 동안 인스턴스를 "재설정"하고 self.maximum = Maximum() 메소드 업데이트가 예상되는 결과를 얻는 동안 발견했습니다. bougiebuffer의 모든 항목에는 자체 "최대"값이 있습니다. 왜 우리는 당신의 말로 설명해 주시겠습니까? self.maximum = 업데이트가 끝날 때 Maximum()을 써야하는 이유는 무엇입니까? – matel

답변

1

에 대해 동일한 값을 반환하지 않습니다; 사용 중 copy.copy 또는 copy.deepcopy :

from copy import deepcopy 

bougie.maximum = deepcopy(self.maximum) 

변경할 수 있습니다 Maximum의 속성이있는 경우 당신은 deepcopy이 필요합니다; list, dict, set 또는 다른 사용자 정의 클래스 인스턴스는 모두 변경할 수 있지만 정수 및 문자열과 같은 것은 없습니다.