2017-10-12 7 views
0

私は質問を繰り返し、答えを促し、最後に結果を格付けするpython関数test()を持っています。 test()関数の代わりにtest()関数に渡したいと思っているのですが、質問を逆順にしたり、質問を逆順にしたり、odds_only() 、私はnameErrorを取得します。私がどこに間違っていたのか理解してくれる人がいらっしゃいますか関数をargとして渡すときのNameError

>>> my.test(mod=shuffle) 
... NameError: name 'shuffle' is not defined 


def test(self, mod=None): 
    if mod is not None: 
     return_value = mod() 

def shuffle(self): 
    list_of_questions = list(self.dictionary.keys()) 
    random.shuffle(list_of_questions) 
    return list_of_questions 
+0

'my'は何ですか? 'test'と' shuffle'はクラスの一部ですか? – kindall

+0

はい、彼らはすべてクラスの一部です、この場合の私はそのクラスのオブジェクトです – GainesvilleJesus

答えて

2

テストとシャッフルの両方が同じクラスのメソッドである場合、呼び出しは次のようになります。

my.test(mod=my.shuffle) 
+0

ありがとう、それは今より多くの意味があります! – GainesvilleJesus

+0

私がテスト(mod =シャッフル)をしたいのであれば、シャッフル()をクラスの外に出してmain()に入れたり、テスト関数内で利用可能なモッズを定義することは可能でしょうか? – GainesvilleJesus

+0

文字列を渡して、 'getattr()'を使って 'self'にその名前のメソッドを取得することができます。 – kindall

関連する問題