2013-07-21 77 views
-4

對於模糊的問題抱歉。我正在重寫它,所以我希望這有助於。 我想編輯兩個屬性(這是詞典):a和b。 b與(.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" 

崩潰,如果它是調用它的函數(它可能是),讓我知道。 這個工作應該改變a和b每次迭代基於它們的當前值嗎?

我希望這更清楚我所要求的。

+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() 

或宣佈出售價格爲全局變量

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()