2013-07-21 2 views
-4

막연한 질문에 사과드립니다. 나는 이것이 도움이되기를 바란다. 두 속성 (사전)을 편집하려고합니다 : a와 b. b는 a (.8)과 직접 관련이 있습니다. 그것을 호출되는 함수의 경우메소드를 사용하여 클래스 속성 편집 *

class Fun: 
    def __init__(self, name): 
     self.name = name 
     self.a = {1: ["a", 10]} 
     self.b = {2: ["b", 8]} 
    def change(self): 
     for i in self.a: 
      self.a[i][1] = math.floor(random.gauss(self.a[i][1]), 5) 
     self.b = copy.deepcopy(self.a) 
     for i in self.b: 
      self.b[i][1] = math.floor(self.a[i][1] * 0.8) 

나는 A와 B를 변경하는 루프를 통해 실행, 그것은 다음 번 작동

"str" object has no attribute "a" 

와 충돌 (그것이 될 수있는) 나를 보자 알고있다. 이것이 현재 값을 기반으로 각 반복을 변경해야합니까?

나는 이것이 내가 원하는 것을 더 분명히하기를 희망한다.

+1

당신은에 액세스 할 수? –

+0

및 무엇이 문제입니까? –

+0

@Faller, 왜 극적으로 질문을 변경합니까? 그건 내 대답을 쓸모 없게 만든다. :( – falsetru

답변

2

로컬 변수 sell_price을 작성합니다. 이는 cahnge_price 기능 외의 sell_price에는 영향을주지 않습니다.

sell_pricechange_price으로 반환하십시오. change_price의 반환 값을 명시 적으로 sell_price 외부에 할당합니다.

def change_prices(): 
    for i in price: 
     price[i][1] = math.floor(random.gauss(price[i][1], 5)) 
    sell_price = copy.deepcopy(price) 
    for i in sell_price: 
     sell_price[i][1] = math.floor(price[i][1] * .8) 
    return sell_price 

price = {1: ["Spices", 43], 2: ["Something else",50]} 
sell_price = change_prices() 

또는 전역 변수로 sell_price를 선언 아무것도 변경하도록되어 그것의 일부

def change_prices(): 
    global sell_price 
    for i in price: 
     price[i][1] = math.floor(random.gauss(price[i][1], 5)) 
    sell_price = copy.deepcopy(price) 
    for i in sell_price: 
     sell_price[i][1] = math.floor(price[i][1] * .8) 

price = {1: ["Spices", 43], 2: ["Something else",50]} 
sell_price = change_prices() 
관련 문제