2017-08-17 14 views
-1

私はpython(プログラムはPyCharmです)を使っていましたが、今ではPythonがすべて分かっていないので、答えが私の顔を見ているかもしれません。Python辞書キーの値をクラス内に追加するにはどうすればよいですか?

だから私は複数の辞書を持って、図に示すようにほとんど同じクラス内に含まれる:

class Store(object): 
    storage = { 
     'Console CDs': 3, 
     'Computer CDs': 5, 
     'CD cases': 10, 
     'Game cartridges': 3, 
     'Cartridge Cases': 5, 
     'Xcubes': 0, 
     'GS1s': 0, 
     'CSs': 0 
    } 
    prices = { 
     'Console Game': 30.00, 
     'PC Game': 30.00, 
     'CS Game': 25.00, 
     'Xcubes': 250.00, 
     'GS1s': 250.00, 
     'CSs': 150.00 

そして、私は私が作ったカタログでのショッピングのための機能を持っている(ここでカタログもで辞書ですクラスStoreは、私が上で立ち往生しています一部です:

for key in Store.catalog: 
    if key == x: 
     z = input("How many?\n") 
      if profit >= float(z) * Store.catalog[key]: 
       y = input("Are you sure? This will cost you " + str(Store.catalog[key]) + " cash. Enter Yes or " 
                           "No.\n") 
       if y.lower() == "yes": 
        profit -= float(z) * Store.catalog[key] 
        print("Current Money: $" + str(profit)) 
        print("Purchase Successful.") 
        for item in Store.storage: 
         if x == item: 
          Store.storage[item].update({int(z)}) 
        time.sleep(1) 
        main_function() 
       elif y.lower() == "no": 
        print("Purchase Canceled.") 
        time.sleep(1) 
        shopping() 

for item in Store.storage loopを特定、私は彼らが成功したアイテムを購入した場合、ユーザーが自分のストレージにカタログから購入特定の項目(複数可)のが多く追加します。 問題は、 Store.storage[item].update({int(z)}) と書いても .update という構文が検出されないという問題があります。ただし、クラスを定義せずに行うと、 storage[item].update({int(z)})、 辞書はstorageという辞書を検出しません。

私のコードに何か問題がありますか、それともクラスで辞書を作ったからですか?クラスを削除する必要がありますか?

+1

整数?問題は辞書がクラスに含まれているということではありませんが(無意味なのでモジュールレベルの変数にするだけですが)、辞書の使い方が分かりません。 –

+0

ええ、私はまだPythonを学ぶことといくつかの仕事があります。しかし、 'Store.storage [item] .update(...)'がうまく動作するとは思っていませんでしたが、このシナリオで使用できるかどうかを確認しようとしていました。ありがとう! –

+0

私の主張は、クラス(特にこの質問の関連タグではないPycharm)に関するすべての問題は、あなたのエラーとは何の関係もないということです。クラスが関与しておらず、すべてがグローバルスコープで起こっていれば、エラーは*発生します*。 –

答えて

2

あなたはどちらかを実行します。
Store.storage.update({item:int(z)})
かの操作を行います。 `ストレージ[アイテム]`戻りますが、 `Store.storage [アイテム] .update(...)`動作するように期待していない理由
Store.storage[item] = int(z)

関連する問題