おそらく単純な問題: で選択を使用すると、すべての関数が実行されるように見えます。 例:このスクリプトを実行すると、それはいけないながらPython:リストされているすべての関数呼び出しを実行するランダムな選択
from ordereddict import OrderedDict
from random import choice
def PrintStrings():
Text = choice(["Gutentag!", "Ni hao!", "Hola!"])
print "Chosen Text is:", Text
return Text
class Greeting():
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"]: PrintStrings()},
{self.fields["Afternoon"]: PrintStrings()},
{self.fields["Evening"]: PrintStrings()},
]
result = {}
for i in range(n):
result.update(choice(function))
print "Updated string:",result
return result
text = Greeting()
text.change()
text.changerandom()
、私は、実行されたすべての3
{self.fields["Morning"]: PrintStrings()},
{self.fields["Afternoon"]: PrintStrings()},
{self.fields["Evening"]: PrintStrings()},
を取得します。 このスクリプトが返されます。
Chosen Text is: Ni hao!
Chosen Text is: Gutentag!
Chosen Text is: Hola!
Updated string: {'Good morning!': 'Hola!'}
期待される結果は次のとおりです。
Chosen Text is: Hola!
Updated string: {'Good morning!': 'Hola!'}
'{self.fields [" Morning ":PrintStrings()}'と書くと、 'PrintStrings()'が呼び出されます。 'function'リストの作成の全体が実行されます – njzk2
BTW - 現在' Text'と呼ばれる変数は 'text'という名前にする必要があります。 [PEP-8、Pythonスタイルガイド](https://www.python.org/dev/peps/pep-0008/)を参照してください。 –