2016-08-26 1 views
0

文字列を選択して現在のフィールドを更新するスクリプトを実行しようとしていますが、changerandom関数を呼び出すときに何らかの理由でコードが最後の値を更新しませんGreetingクラス。OrderedDictクラスのPython Updateランダムフィールド選択関数

...[snip]... 
class Greeting(Packet): 
    fields = OrderedDict([ 
     ("Morning",  "Hi"), 
     ("Afternoon", "Good Afternoon!"), 
     ("Evening",  "Good Evening!"), 
    ]) 

    def change(self): 
     self.fields["Morning"] = "Good morning!" 

    def changerandom(self, n = 1): 
     function=[ 
        {self.fields["Morning"]: "Hello!"}, 
        {self.fields["Morning"]: "Bonjorno!"}, 
        {self.fields["Morning"]: "Hola!"}, 
       ] 
     result = {} 
     for i in range(n): 
      result.update(choice(function)) 
      print "Updated string:",result 
      return result 
text = Greeting() 
print text 
text.change() 
print text 
text.changerandom() 
print text 

私のコードのリターン次:

それが戻ってきたべきであるが
Hi 
Good morning! 
Updated string: {'Good morning!': 'Hola!'} 
Good morning! 

Hi 
Good morning! 
Hola! 

私はここに欠けているのかわからないんだけど、私は表示されませんなぜ私は最後のフィールドを更新できません。 ご協力いただければ幸いです!

答えて

0

結果はreturnなので、どこにも割り当てなくても問題になります。

また、むしろキーよりも、fieldsを使用しています。だから、あなたのコードは、私たちがself.fields.updateを使用している

def changerandom(self, n = 1): 
     function=[ 
        {"Morning": "Hello!"}, 
        {"Morning": "Bonjorno!"}, 
        {"Morning": "Hola!"}, 
       ] 

     for i in range(n): 
      result = choice(function) 
      self.fields.update(result) 
      print "Updated string:",result 
      return result 

ノートのようなものであるべきであり、我々は何をするもはやreturnじゃないんです。

は一般的に、それはリターン何か、または変更何かにあなたの関数やメソッドのために良い習慣だが、決して両方。

+0

右トリックありがとう! – user1473508